¿Cómo tuvo el error estándar en un archivo en DOS (archivo por lotes)?
-
28-10-2019 - |
Pregunta
¿Cómo tuvo un error estándar a un archivo en un archivo de lotes de DOS? Tuberías usando >>
Solo las tuberías de la salida estándar y el error estándar aún va a la consola.
Detalles de mi problema:
Estoy ejecutando Winrar a través de la línea de comandos, en una copia de seguridad diaria automatizada. Y el siguiente ejemplo tiene la salida de Winrar, pero no la salida de error que es lo que más quiero, a winraroutput.txt
:
RAR.exe a -esh -r "E:\backup.rar" "D:\*.*" >> winraroutput.txt
El problema es que a veces los archivos están en uso y cuando lo están quiero saber que se les perdió en el archivo y registrar esto en un .txt
Archivo al lado de cada .rar
Archivo en caso de que tengamos que volver. Los archivos faltantes se reemplazan fácilmente por reinstalar programas, por lo que no es gran cosa reemplazarlos, siempre que sepamos que están faltando. Por lo tanto, es solo información que sería genial saber, no necesaria, en el momento de la necesidad.
¿Cómo salgo solo la salida de error estándar al .txt
Archivo y, si es posible, pero no es necesario, ¿deja la salida regular a la consola?
Puntos extra:
¡Puntos de bonificación si puede decirme cómo eliminar el archivo si está en blanco (sin errores)! Preguntó aquí: ¿Cómo detecto (y elimino) un archivo si está vacío usando un archivo por lotes de Windows?.
Solución
Prueba esto:
command.exe 2>file.txt
O si prefiere no ver ningún error, envíelo a NUL:
command.exe 2>nul
Esto debería dejar std :: cout en la consola.