Wie führe ich mehrere CMD-Befehle aus?Hallo,
Ich versuche, über die Eingabeaufforderung einen einfachen Auszug einer ZIP-Datei (TGZ) aus JMP zu erstellen, und es gelingt mir mit dem folgenden Ansatz nicht (ich habe viele lächerliche Ideen ausprobiert, keine scheint zu funktionieren ...) :
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")
);
Danke!
Qualitäts- und VerfahrenstechnikBetreff: Wie führe ich mehrere CMD-Befehle aus?Vielen Dank an alle! PMROZ Ihre Antwort ist genau das, wonach ich gesucht habe!
Der letzte Fehler meinerseits ist das Leerzeichen im Pfad, das mit dem \!"-Zeichen leicht behoben werden kann ...
Lösung:
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" )),
)
);Betreff: Wie führe ich mehrere CMD-Befehle aus?Ich musste der von JSL generierten .cmd-Datei mit „\!N“ harte Rückgaben hinzufügen.
Betreff: Wie führe ich mehrere CMD-Befehle aus?Für das, was es wert ist, ist die Verwendung von RunProgram schwierig ... Ich vermute, die meisten von uns müssen viele lächerliche Ideen ausprobieren, bevor sie funktionieren 
Betreff: Wie führe ich mehrere CMD-Befehle aus?Sie können auch einfach alle Befehle in eine CMD-Datei schreiben und diese ausführen.
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" )),
)
);
Betreff: Wie führe ich mehrere CMD-Befehle aus?Beispiel 3 im Scripting-Index
RunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram ist so eingerichtet, dass es Befehle an CMD.exe weiterleitet
ist eine Möglichkeit.
Eine andere Möglichkeit wäre die Verwendung eines Befehlstrennzeichens innerhalb der Parameter. Abgeändert von Beispiel 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 ) ) )
);
(Beide oben genannten sind so eingerichtet, dass sie während der Ausführung von cmd.exe lesen und die Antworten in das JMP-Protokoll schreiben. Ihr ursprüngliches Beispiel mit readfunction("text") ist die einfachere, weniger flexible Möglichkeit, die gesamte Ausgabe zu sammeln und am Ende darzustellen.)