Comment exécuter plusieurs commandes CMD ?Bonjour,
J'essaie de faire un simple extrait d'un fichier zip (TGZ) à partir de JMP à l'aide de l'invite de commande, et je n'y parviens pas en utilisant l'approche suivante (j'ai essayé de nombreuses idées ridicules, aucune ne semble fonctionner ...) :
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")
);
Merci!
Ingénierie de la qualité et des procédésRe : Comment exécuter plusieurs commandes CMD ?Merci à tous plusieurs fois ! PMROZ Votre réponse est exactement ce que je cherchais !
Le dernier défaut de ma part est l'espace dans le chemin qui se résout facilement avec le caractère \!"...
Solution:
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" )),
)
);Re : Comment exécuter plusieurs commandes CMD ?J'ai dû ajouter des retours durs au fichier .cmd généré par JSL en utilisant "\!N".
Re : Comment exécuter plusieurs commandes CMD ?Pour ce que ça vaut, utiliser RunProgram est délicat... Je soupçonne que la plupart d'entre nous doivent essayer de nombreuses idées ridicules avant de le faire fonctionner 
Re : Comment exécuter plusieurs commandes CMD ?Vous pouvez également simplement écrire toutes les commandes dans un fichier CMD et l'exécuter.
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 : Comment exécuter plusieurs commandes CMD ?Exemple 3 dans l'index de script
RunProgram set up to feed commands to CMD.exeRunProgram set up to feed commands to CMD.exeRunProgram configuré pour envoyer des commandes à CMD.exe
est un moyen.
Une autre méthode consisterait à utiliser un séparateur de commandes dans les paramètres. Modifié à partir de l'exemple 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 ) ) )
);
(Les deux éléments ci-dessus sont configurés pour lire à partir de cmd.exe, pendant son exécution, et écrire les réponses dans le journal JMP. Votre exemple original avec readfunction("text") est le moyen le plus simple et le moins flexible qui rassemble toutes les sorties et les présente à la fin.)