Ms-Dos - Pausa cada 10 lineas

 
Vista:
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 28/04/2020 04:11:43
Hola amigos estoy intentando crear un batch que me permita lo siguiente
voy a abrir 408 paginas de internet con chrome supongo que con un
start www.google.com (o algo asi)
como tanta cantidad me provocara algun problema quiero hacer una pausa cada 10
La lista de links la tengo en un "fichero.txt" y tengo un enlace por linea

La idea es

1- Recorrer cada linea del archivo de texto (FOR /F %%A IN (fichero.txt) DO @ECHO Linea: %%A)
2- Abrir cada enlace que vaya leyendo (start %%A)
3-hacer una pausa en el proceso cada 10 lineas leidas (no se como se hace)

De esa manera, abrire 10 pestañas, realizare los procesos y luego abrire las siguientes 10

Me ayudan???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Antoni Masana (811 intervenciones) el 28/04/2020 17:43:15
Como no has puesto tu código no te puedo decir donde poner cara cosa.

Esto es más o menos lo que hay que poner.

Al inicio:

1
SET Num=0

En el bucle:

1
2
3
4
5
SET /A Num+=1
IF %Num% EQ 10 (
    Set Num=0
    TimeOut /T 10 /NOBRACK  >nul
)

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 28/04/2020 18:27:50
Hola Anto, Espero que te encuentres muy bien. Como es cstumbre, siempre estas atento a las necesidades de todos.
No tengo mucho codigo que subir
Veo que tu sugerencia incrementa la variable en 1 , ycuando llega a 10 la reinicia

Necesito que el proceso lea cada linea del fichero "fichero.txt" (410 lineas) y
cada linea la abra en mi navegador chrome
cada 10 lineas el proceso se detenga esperando una oren del usuario


Adaptando tu codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rem defino variable para el contador
SET /A Num+=1
 
rem inicio el bucle. Cada Linea del fichero.txt se ejecuta con start %%A
FOR /F %%A IN (fichero.txt) DO (
	@start %%A
 
	REM BUCLE CONTADOR. Agrega +1 a la variable. Si es igual a 10 vuelve a 0
	IF %Num% EQ 10 (
    		Set /A Num=0
 
    		rem la linea "TimeOut /T 10 /NOBREAK > nul" es por tiempo??
		rem yo preciso una pausa
		pause
    	)
 
)

Donde me equivoco??? este proceso no hace nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 28/04/2020 18:44:51
Agrego:

La opcion siguiente tampoco me funciona

1
2
3
4
5
SET /A Num+=1
:inicio
rem inicio el bucle. Cada Linea del fichero.txt se ejecuta con start %%A
FOR /F %%A IN (fichero.txt) DO (IF %Num% EQ 10,Set /A Num=0,@start %%A)
pause
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Antoni Masana (811 intervenciones) el 28/04/2020 21:52:26
Realizo unos ajustes en tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
rem defino variable para el contador
SET Num=0
 
rem inicio el bucle. Cada Linea del fichero.txt se ejecuta con start %%A
FOR /F %%A IN (fichero.txt) DO Call :Inicio %%A
goto :EOF
 
:Inicio
    start %1
    REM BUCLE CONTADOR. Agrega +1 a la variable. Si es igual a 10 vuelve a 0
    Set /A Num+=1
    IF %Num% EQ 10 (
        Set Num=0
        pause
    )
    goto :EOF

Te cuento porque falla esto:

1
FOR /F %%A IN (fichero.txt) DO (IF %Num% EQ 10,Set /A Num=0,@start %%A)

Microsoft que es el padre de la criatura a tratado siempre muy mal al sistema operativo MS-DOS y esta lleno de fallos y de parches que mal solucionan los fallos.

El comando FOR y el comando SET se llevan muy mal y es muy complicado asignar un valor a una variable dentro del FOR, hay una chapuza que se llama SETLOCAL pero yo no la uso.

Para entender que hace el BAT: Supongo que debes conocer el comando GOTO que salta a una etiqueta dentro del BAT, y conoces el comando CALL que sirve para llamar a otro BAT y que cuando este segundo finalice vuelva al primero.

Pues cuando pones al CALL un nombre precedido de dos punto lo que hace es llamarse a si mismo y saltar a la etiqueta indicada y con este truco evito el problema se los FOR y los SET.

Si ejecutas cualquier comando con la opción /? te muestra la ayuda.

Saludos
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 29/04/2020 21:20:39
Hola Antoni, Muchas Gracias por tus explicaciones
Te cuento que el codigo no me funciona.
Intente hacer alguna modificaciones para probar si podian existir espacios adicionales pero tampoco

Veo que la primera linea de la rutina :Inicio dice "start %1" lo que entiendo que sera el primer parametro pasado desde el call aunque para visualizar el problema pongo echo on y se visualiza el loop trabajando y sin detenerse, tampoco abre las paginas. una de las lineas muetra lo siguiente

C:\Users\Blas\Desktop\links>Call :Inicio http://www.google.com

Se ve la llamada Call y al parecer toma inicio como un cOmando cuyo parametro %1 es el link a abrir
pero no esta funcionando
Es posible replantear la idea para lograr lo siguiente?

hacer un bucle contador
cada numero que avanza el contador corresponde a la linea del fichero desde dnde tomara la url
ahi podre colocar la pausa cada 10 lineas.

Probe muchas cosas y variantes sobre lo que me indicaste pero no me resulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Antoni Masana (811 intervenciones) el 29/04/2020 23:08:34
He realizado unos cambios.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
rem defino variable para el contador
SET Num=0
 
rem inicio el bucle. Cada Linea del fichero.txt se ejecuta con start %%A
FOR /F %%A IN (fichero.txt) DO Call :Inicio "%%A"
goto :EOF
 
:Inicio
    start "Ventana" %1
    REM BUCLE CONTADOR. Agrega +1 a la variable. Si es igual a 10 vuelve a 0
    Set /A Num+=1
    IF %Num% == 10 (
        Set Num=0
        pause
    )
    goto :EOF

En esta línea veras que esta entre comillas y la causa es que direcciones como esta:

1
C:\Users\Blas\Desktop\links>Call :Inicio "https://www.facebook.com/?ref=tn_tnmn"

Dan problemas porque la /? que hay en el texto no la interpreta como parte del texto sino como si hiciese esto CALL /?

La línea del STAR tiene un texto nuevo en este caso VENTANA pero puedes poner cualquier cosa.
Como el parámetro que tiene que ejecutar esta entre comillas cree que es el parámetro Titulo de la ventana y abre ventanas de MSDOS con este titulo.

Aunque este es opcional hay que ponerlo aunque sea vació.

Así también funciona:

1
STAR "" %1

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 30/04/2020 00:34:18
ANTONI me enseñaste mucho !!! queria agradecerte.
Seguire explorando y aprendiendo.
El proceso sigue creciendo pero entiendo que deb abrir un nuevo tema.

Para quienes les sirva lo actuado, les dejo el codigo con las aclaraciones

Salud !!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@echo off
 
REM GRACIAS ANTONI POR ENSEÑARNOS
 
REM PROCESO BATCH PARA ABRIR TODOS LOS URL CONTENIDOS EN UN FICHERO.TXT
REM EL PROCESO RECORRE CADA LINEA DE FICHERO.TXT QUE DEBE ESTAR EN LA MISMA CARPETA QUE EL BAT
REM EL PROCESO ABRE CADA URL EN EL NAVEGADOR PREDETERMINADO
REM EL PROCESO HACE UNA PAUSA CADA 10 URL ABIERTAS
 
REM LA VENTANA DEL PROCESO QUEDA EN PRIMER PLANO, PARECE QUEDAR FREEZADA MIENTRAS HACE LA TAREA
REM DEPENDIENDO DE LA VELCIDAD DEL EQUIPO EL PROCESO PUEDE DEMORAR LA AERTURA DE LAS PETAÑAS
REM CUAND LAS 10 PAGINAS HAYAN SIDO ABIERTAS APARECERA LA VISUALIZACION DE "PULSE UNA TECLA PARA CONTINUAR..." EN LA VENTANA DEL CMD
 
 
rem defino variable para el contador
SET Num=0
 
rem inicio el bucle para recorrer cada Linea del fichero.txt y abrirlas en el navegador predeterminado
rem el For llama al subproceso :Inicio pasandole el valor de %%A como primer argumento (entre comillas)
FOR /F %%A IN (fichero.txt) DO Call :Inicio "%%A"
rem aqui puede seguir el proceso
 
goto :EOF
 
 
Rem subproceso para abrir cada url del fichero.txt con pausas cada 10 lineas
:Inicio
    	Rem el comando start inicia la apliacacion. En este caso, como se trata de una URL la abre en el navegador
	rem Se incluye un titulo para la "Ventana" activa
	rem el parametro %1 es el primer argumento obtenido de la llamada Call :inicio "%%A"
	start "Ventana" %1
 
	REM BUCLE CONTADOR. Agrega +1 a la variable. Si es igual a 10 vuelve a 0
    	Rem define que la variable Num sera numerica (/A) e incremental en 1 (+=1)
	Set /A Num+=1
 
	REM Compara Num con 10, Si es igual a 10 hace la pausa	caso cotrario sale del if y vuelve al for
 
    IF %Num% == 10 (
        Set Num=0
        pause
    )
    goto :EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Pausa cada 10 lineas

Publicado por Blas (16 intervenciones) el 30/04/2020 04:24:26
Dejo tambien un Codigo en VBA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim WebUrl As String
    Dim i As Integer
    Dim xx As Integer: xx = 0
    For i = 1 To 450
     WebUrl = "http://" & Cells(i, 2).Value & """"
     Shell ("C:\Program Files\Google\Chrome\Application\chrome.exe -url " & WebUrl)
    If xx = 10 Then GoSub mensaje: xx = 0
    xx = xx + 1
    Next
GoTo fin
mensaje:
If MsgBox("desea Continuar ?", vbYesNo) = vbYes Then Return
GoTo fin
 
fin:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar