es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Redirigiendo la salida desde cmd /c

Tengo el siguiente comando (que ejecuto desde CScript pero estoy probando en la línea de comandos).

Este comando fallará conscientemente, pero quiero que la salida vaya al archivo temporal radA9D4F.tmp

cmd /c java -jar “saxon9he.jar” -o:”radF45AB.tmp” -s:”WOnReportTemp_3816933937777_1.xml” -xsl:”filename.xsl1″ > radA9D4F.tmp

pero simplemente imprime el error en la consola (error correcto pero quiero que se redirija)

filename.xsl1 no existe

y no hay salida redirigida en radA9D4F.tmp.

Mirando https://ss64.com/nt/cmd.html, tiene un ejemplo similar

Espacios en la ruta del programa + parámetros con espacios:

CMD /k “”c:\batch files\demo.cmd” “Parameter 1 with space” “Parameter2 with space””

Entonces CREO que necesito encerrar toda la parte de java entre comillas dobles de alguna manera, como

cmd /c “”java -jar “saxon9he.jar” -o:”radF45AB.tmp” -s:”WOnReportTemp_3816933937777_1.xml” -xsl:”filename.xsl1″” > radA9D4F.tmp

pero esto solo imprime

No se encuentra la ruta especificada por el sistema.

De hecho, incluso esto

cmd /c “”java -jar “saxon9he.jar”” “”

imprime

No se encuentra la ruta especificada por el sistema.

Así que creo que el problema básico es cómo ejecutar un comando usando cmd /c donde potencialmente todas las rutas pueden contener espacios.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para redirigir correctamente la salida del comando y manejar rutas con espacios, debes encerrar todo el comando entre comillas dobles y usar el carácter acento circunflejo (^) para escapar las comillas dobles internas. Tu comando debería lucir así:

    cmd /c ""java -jar ^"saxon9he.jar^" -o:^"radF45AB.tmp^" -s:^"WOnReportTemp_3816933937777_1.xml^" -xsl:^"filename.xsl1^"" >radA9D4F.tmp
    

    Esto encerrará correctamente todo el comando entre comillas dobles y escapará las comillas dobles internas para que el comando pueda ser ejecutado correctamente. La salida será redirigida a radA9D4F.tmp.

Comments are closed.