¿Cómo puedo hacer que un script por lotes de Windows sea completamente silencioso?



1 Answers

Si desea que todo el resultado normal de su secuencia de comandos por lotes sea silencioso (como en su ejemplo), la forma más fácil de hacerlo es ejecutar el archivo por lotes con una redirección:

C:\Temp> test.bat >nul

Este método no requiere modificar una sola línea en el script y aún muestra mensajes de error en la pantalla. Para suprimir todos los resultados, incluidos los mensajes de error:

C:\Temp> test.bat >nul 2>&1

Si su secuencia de comandos tiene líneas que producen resultados que desea que aparezcan en la pantalla, quizás sea más sencillo agregar una redirección a esas líneas en lugar de todas las líneas que desea mantener en silencio:

@ECHO OFF
SET scriptDirectory=%~dp0
COPY %scriptDirectory%test.bat %scriptDirectory%test2.bat
FOR /F %%f IN ('dir /B "%scriptDirectory%*.noext"') DO (
del "%scriptDirectory%%%f"
)
ECHO
REM Next line DO appear in the screen
ECHO Script completed >con

Antonio

Question

Ha habido variantes de esta pregunta durante generaciones, pero a pesar de escribir algunas secuencias de comandos de Windows bastante complicadas, parece que no puedo encontrar la manera de silenciarlas.

El siguiente es un extracto de uno de mis scripts actuales:

@ECHO OFF
SET scriptDirectory=%~dp0
COPY %scriptDirectory%test.bat %scriptDirectory%test2.bat
FOR /F %%f IN ('dir /B "%scriptDirectory%*.noext"') DO (
del "%scriptDirectory%%%f"
)
ECHO

El resultado de esto es:

C:\Temp> test.bat
        1 file(s) copied.
File Not Found
Echo is off.

C:\Temp>

Considerando que el "1 archivo (s) copiado". es simplemente molesto, el "Archivo no encontrado" hace que el usuario piense que algo ha salido mal (lo cual no ha sucedido, ningún archivo está bien).




Puede redirigir stdout a nul para ocultarlo.

COPY %scriptDirectory%test.bat %scriptDirectory%test2.bat >nul

Simplemente agregue >nul a los comandos de los que desea ocultar la salida.

Here puede ver todas las diferentes formas de redirigir las transmisiones estándar.






Related