¿Cómo ejecuto varios comandos CMD?Hola,
Estoy tratando de hacer un extracto simple de un archivo zip (TGZ) de JMP usando el símbolo del sistema, y no logro hacerlo usando el siguiente enfoque (probé muchas ideas ridículas, ninguna parece funcionar...) :
Names Default To Here( 1 );
path1="C:/Users/niros/Downloads/";
path2="C:/Program Files/WinRAR/WinRAR.exe";
path3="C:/Users/niros/Downloads/LP.tgz";
RP = RunProgram(
Executable( "CMD.EXE" ),
Options( { {"cd", path1}, {"mkdir", "testing"}, {"cd", "testing"}, {path2,"x", path3} } ),
Read Function("text")
);
¡Gracias!
secuencias de comandosRe: ¿Cómo ejecuto varios comandos CMD?Ejemplo 3 en el índice de secuencias de comandos
RunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram configurado para enviar comandos a CMD.exe
es de una manera
Otra forma sería usar un separador de comando dentro de los parámetros. Modificado del ejemplo 1:
RP = Run Program(
Executable( "CMD.EXE"/*path probably not needed*/ ),
Options( {"/a", "/q", "/c dir && echo hello && ping localhost"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
(Ambos de los anteriores están configurados para leer desde cmd.exe, mientras se ejecuta, y escribir las respuestas en el registro de JMP. Su ejemplo original con función de lectura ("texto") es la forma más simple y menos flexible de recopilar todos los resultados y presentarlos al final).
Re: ¿Cómo ejecuto varios comandos CMD?También puede simplemente escribir todos los comandos en un archivo CMD y ejecutarlo.
path1="C:/Users/niros/Downloads/";
path2="C:/Program Files/WinRAR/WinRAR.exe";
path3="C:/Users/niros/Downloads/LP.tgz";
//-------------------------------------------------------------------------------
// Create a command file to run multiple commands
cmd_file_text = evalinsert(
"rem Run multiple commands\!N
C:\!N
cd ^path1^\!N
mkdir testing\!N
cd testing\!N
^path2^ x ^path3^\!N
pause\!N
");
cmd_file_name = "c:\temp\run_commands.cmd";
// Save command file to disk
save text file(cmd_file_name, cmd_file_text, mode("replace"));
//-------------------------------------------------------------------------------
// The /c option carries out the command before terminating
run_cmds = runprogram(executable("cmd.exe"), options("/c " || cmd_file_name), readfunction("text"));
nw = new window("Output", << modal,
panel box("CMD output:",
text box(run_cmds, set width(800), set wrap(800),
<< Set Font( "Courier New" )),
)
);
Re: ¿Cómo ejecuto varios comandos CMD?Por lo que vale, usar RunProgram es complicado... Sospecho que la mayoría de nosotros tenemos que probar muchas ideas ridículas antes de que funcione 
Re: ¿Cómo ejecuto varios comandos CMD?Tuve que agregar retornos duros al archivo .cmd generado por JSL usando "\!N".
Re: ¿Cómo ejecuto varios comandos CMD?¡Gracias a todos muchas veces! PMROZ ¡Tu respuesta es exactamente lo que estaba buscando!
La última falla de mi parte es el espacio en el camino que se resuelve fácilmente con el carácter \!"...
Solución:
path1="C:/Users/niros/Downloads/";
path2="\!"C:/Program Files/WinRAR/WinRAR.exe\!"";
path3="C:/Users/niros/Downloads/LP.tgz";
//-------------------------------------------------------------------------------
// Create a command file to run multiple commands
cmd_file_text = evalinsert(
"rem Run multiple commands\!N
cd ^path1^\!N
mkdir testing\!N
cd testing\!N
^path2^ x ^path3^\!N
pause\!N
");
cmd_file_name = "c:\temp\run_commands.cmd";
// Save command file to disk
save text file(cmd_file_name, cmd_file_text, mode("replace"));
//-------------------------------------------------------------------------------
// The /c option carries out the command before terminating
run_cmds = runprogram(executable("cmd.exe"), options("/c " || cmd_file_name), readfunction("text"));
nw = new window("Output", << modal,
panel box("CMD output:",
text box(run_cmds, set width(800), set wrap(800),
<< Set Font( "Courier New" )),
)
);