Pausar la ejecución de mi batch

Hola,

Entonces tengo otro problema en mi línea de código, presento mi tema con un título más apropiado.

 @echo off cls MD "C:\WINDOWS\SYSTEM32\TEST" 'Esto crea el directorio / carpeta TEST. FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST" Esto mueve mspaintboucle.bat que es este batch dentro del directorio creado echo "@echo off">nuevo.bat echo cls>>nuevo.bat echo start mspaint>>nuevo.bat Esto tendrá como consecuencia la creación del archivo "nuevo.bat" que ejecutará en bucle mspaint con la siguiente línea :boucle start C:\WINDOWS\SYSTEM32\TEST\nuevo.bat goto boucle PAUSE


Sin embargo, mi problema es que el programa crea el directorio "TEST", mueve el mspaintboucle.bat que lo creó (el directorio TEST), pero tengo que ir a "C:\WINDOWS\SYSTEM32\TEST\" para volver a hacer clic en el mspaintboucle.bat para ejecutar esto:

 echo "@echo off">nuevo.bat echo cls>>nuevo.bat echo start mspaint>>nuevo.bat Esto tendrá como consecuencia la creación del archivo "nuevo" que ejecutará en bucle mspaint con la siguiente línea :boucle start C:\WINDOWS\SYSTEM32\TEST\nuevo.bat goto boucle


Porque no habrá creado el "nuevo.bat", pero al volver a hacer clic en él, se creará y comenzará el bucle.
Mi problema es que tengo que hacer clic 2 veces en el mspaintboucle.bat, la primera en mi escritorio y la segunda en el directorio que creó para poder crear "nuevo.bat" y hacerlo en bucle, me gustaría evitar el doble clic y que se ejecute con un solo clic. ¿Es porque "nuevo.bat" no tiene tiempo de crearse, así que la aplicación se termina antes de poder crearlo? Y entonces, si es así, me gustaría saber cómo hacer una pausa entre la creación de "nuevo.bat" y el bucle para que tenga tiempo de crearse, o si hay un error en mi código que hace que sea imposible de realizar. En este caso, cualquier ayuda sería bienvenida.
Configuración: Windows XP Firefox 2.0.0.14

13 respuestas

  1. Bueno, escucha, si abro el archivo, y voy al directorio creado, y vuelvo a hacer clic en él, funciona. Hay que hacer clic dos veces, así que... Y eso es lo que me gustaría evitar.
    0
    1. Colaborador
      ¿Nada lanza mspaint?
      ¿Al menos has comprobado que este comando es suficiente, que mspaint está en el PATH?
      --
      ¡Saludos!
      Char Snipeur
      0
      1. escucha, todavía no funciona, el directorio se crea, el .bat que contiene el código se mueve dentro, pero nada activa mspaint, incluso he intentado hacer cd/call al nuevo.bat pero nada, es algo tan simple que me está volviendo loco...
        0
        1. Colaborador
          @echo off cls MD "C:\WINDOWS\SYSTEM32\TEST" 'Esto crea el directorio / carpeta TEST. FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST" Esto mueve mspaintboucle.bat que es este batch dentro del directorio creado cd C:\WINDOWS\SYSTEM32\TEST\ call "C:\WINDOWS\SYSTEM32\TEST\mspaintboucle.bat" echo "@echo off">nuevo.bat echo cls>>nuevo.bat echo start mspaint>>nuevo.bat Esto tendrá como consecuencia crear el archivo "nuevo.bat" que ejecutará en bucle mspaint con la siguiente línea:bucle start C:\WINDOWS\SYSTEM32\TEST\nuevo.bat goto bucle PAUSE 
          --
          ¡Saludos!
          Char Snipeur
          0
          1. Mi directorio se crea en C:\WINDOWS\system32\TEST para que pueda lanzarlo con la función "start", y mi archivo se crea dentro de este.
            0
            1. Colaborador
              No, X debe estar en segundo.
              ¡No creo que sea un problema de tiempo! La ejecución de un script es siempre secuencial y tus archivos son muy pequeños.
              ¿Dónde creas tu nuevo.bat?
              Es normal que no funcione, no respetas el directorio actual, el PATH, etc.
              --
              ¡Saludos!
              Char Snipeur
              0
              1. echo off cls MD "C:\WINDOWS\SYSTEM32\TEST" FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST" set /A heurfin=%time:~6,2%+X :start set /a heur=%time:~6,2% set /a temprestant=%heurfin%-%heur% if "%heurfin%"=="%heur%" goto finpause goto start :finpause echo "@echo off">shutdown.bat echo cls>>shutdown.bat echo shutdown -s>shutdown.bat echo PAUSE>shutdown.bat set /A heurfin=%time:~6,2%+X :start set /a heur=%time:~6,2% set /a temprestant=%heurfin%-%heur% if "%heurfin%"=="%heur%" goto finpause goto start :finpause :boucle start C:\WINDOWS\SYSTEM32\TEST\shutdown.bat goto boucle PAUSE
                0
                1. ¿Está incompleto aquí? ¿6,2 está en segundo?
                  0
                  1. puré de goto... me faltan los go sub y estará completo
                    ... me recuerda mis primeras horas de informática...
                    las de antes de Windows 95, donde el DOS 5.0 era una referencia y el 6.1 una porquería, excepto el dblspace.exe

                    lol
                    0
                    1. bueno, vamos:
                      set /A heurfin=%time:~6,2%+X
                      :inicio
                      set /a heur=%time:~6,2%
                      set /a temprestant=%heurfin%-%heur%
                      if "%heurfin%"=="%heur%" goto finpause
                      goto inicio
                      :finpause
                      0
                      1. sí, parece más o menos correcto, para el temporizador, busca un poco, te doy la respuesta en 10 minutos :)
                        0
                        1. Sí, en general, pero ¿está correcto mi código? Aparte del temporizador.
                          0
                          1. ¿Poner un temporizador???
                            Parece que es posible en todos los lenguajes
                            Debería sacar mi libro de DOS ;o))
                            0