Necesito un archivo por lotes que reciba dos parámetros: un comando (nombre de archivo con algunos argumentos) y una ruta a un archivo, para la redirección de salida de la ejecución del comando. Probé algunas variantes como call %1 > %2
, start %1 > %2
en el archivo 'q.cmd', llamando a as q "echo test" "log.txt"
y q 'echo test' 'log.txt'
and %1
or call %1
with q "echo test > log.txt"
pero nada funciona. También lo probé ^
antes >
. En la mayoría de los casos imprime "'echo no se reconoce como un comando interno o externo..." o algo como esto y a veces crea 123.txt vacío o con algunas líneas de servicio, pero no con "prueba" como necesito. ¿Cómo puedo solucionar el problema?
Respuesta1
q "echo test" "log.txt"
estaría alimentando dos parámetros.
"prueba de eco" sería independiente y ya no es "Echo" seguido de "prueba" como argumento para Echo, sino un único comando llamado "prueba de eco", que no es válido.
Debe separar los argumentos de los comandos y, en realidad, las secuencias de comandos por lotes NO son la mejor manera de hacerlo, especialmente si desea una cantidad dinámica de argumentos. Considere la posibilidad de utilizar PowerShell en su lugar.
Dicho esto, si desea algo simple, no tan flexible y que siga siendo un archivo por lotes, quizás pruebe lo siguiente en su archivo por lotes:
%2 %3 > %1
.
Luego, simplemente especifique primero el archivo de salida, seguido del comando, seguido del argumento que desea usar con ese comando.
Es decir: q log.txt echo Test
, o q log.txt echo "string with spaces to echo"
.
Estos funcionan para mí. :)