2011-06-17 8 views
5

Digamos que ejecutamos un comando como el siguiente y redirigimos la salida de la consola a un archivo de texto.Problema con el comando `pause` al redirigir un registro de línea de comandos al archivo

Mi problema es que hay comandos pause dentro del script por lotes y al redireccionar así, no puedo saber cuándo presionar enter para continuar el lote.

Ayúdeme a obtener el lote "ignora" los comandos pause sin cambiar el lote. Prefiero obtener alguna sintaxis de redireccionamiento/canalización.

MyBatchScriptWithPause.bat > SomeFile.txt 

Respuesta

3

Esto debe hacerlo:

(echo.&echo.&echo.&echo.) | MyBatchScriptWithPause.bat > somefile.txt 

suponiendo que ningún otro comando se espera la entrada del usuario en ese archivo por lotes.

Editar
También se supone que sólo un comando único pause está en ese archivo. De lo contrario, la sugerencia de Andriy debería funcionar.

+1

El OP dice: * ''pausa' ** comandos ** '*. Creo que, en lugar de 'echo x' podría ser' type file.txt' donde 'file.txt' es un archivo con muchas líneas vacías. –

+1

Aunque '(echo. & Echo. & Echo. & Echo.) | MyBatchScriptWithPause.bat> somefile.txt' podría funcionar también. –

+0

@Andriy: gracias por la sugerencia –

1

no estoy seguro acerca de ignorar las pausas, pero se puede redirigir a error estándar:

pause 1>&2 

lo que permitiría a saber cuándo se había producido una pausa.

+0

Gracias Paul. Pero no quiero cambiar a las llamadas de pausa actualmente en el archivo por lotes. –

3
MyBatchScriptWithPause.bat > SomeFile.txt < nul 

nul es un dispositivo DOS que proporcionará datos nulos infinita, por lo que actuará como entrada cada vez que el script necesita alguna. Todavía está disponible incluso en versiones modernas de Windows.

+0

Esto es prometedor. Lo revisaré. Gracias @mrb. –

+0

Lo he comprobado pero no funciona en Windows 7. Gracias de todos modos. –

+0

realmente? '> log.txt

Cuestiones relacionadas