Kopieren Sie Dateien mit RunProgramIch muss ab und zu einige Konfigurationsdateien auf den PCs der Benutzer aktualisieren, und ich möchte dies automatisch tun. In der Vergangenheit habe ich temporäre .bat-Dateien erstellt und diese mit open() ausgeführt. Jetzt versuche ich, runprogram zu verwenden, um dasselbe zu tun, aber es funktioniert nicht. Ich glaube, ich bin fast am Ziel - jede Hilfe wird sehr geschätzt.
Hier ist mein Programm:
old_file = "C:\some directory\file1.ext";
new_file = "Z:\zdrive folder\file1.ext";
d1 = last modification date(old_file);
d2 = last modification date(new_file);
if (d1 != d1,
options_list = evallist({"copy", "/y", evalinsert("\["^new_file^"]\"), evalinsert("\["^old_file^"]\")});
status = runprogram(executable("cmd.exe"), options(options_list), readfunction("text"));
);Wenn die Daten nicht identisch sind, setzt es doppelte Anführungszeichen um jeden Dateinamenpfad und führt eine Kopie/J in einer DOS-Shell aus. Ich verwende übrigens Windows 7. Ich habe die Zeichenfolge in einem DOS-Fenster ausgeführt und die Datei wurde problemlos kopiert.
Betreff: Dateien mit RunProgram kopierenEin paar Anmerkungen dazu Datei kopieren( Von-Datei, Zu-Datei ) :
- Das einordnen kann nicht existieren, also muss ich es zuerst löschen (mit Datei existiert und Datei löschen )
- Das Datei kopieren Programm handhabt unc-path Dateinamen (zB \\smith.company.com\dir1\dir2\dir3\file.ext). Der DOS-Kopierbefehl schien damit Probleme zu haben.
So, Datei kopieren regiert den Tag! Danke noch einmal.
Betreff: Dateien mit RunProgram kopierenDanke Justin und Craige. Ich denke, ich werde verwenden Datei kopieren da dies eine einfachere Lösung ist. Aber es ist gut zu wissen, wie man es benutzt Programm ausführen mit eingebauten DOS-Befehlen.
Betreff: Dateien mit RunProgram kopierenEin bisschen mehr Informationen hier , was erklärt, dass dir und copy in den cmd.exe-Interpreter integriert sind.
Betreff: Dateien mit RunProgram kopierenEs gibt tatsächlich eine JSL-Funktion (Copy File), die dies für Sie erledigt.
Wenn Sie RunPogram bevorzugen, müssen Sie den Kopierbefehl mit dem Pfad zu den beiden Dateien in einer einzigen Zeichenfolgenoption einfügen. Ich musste auch die Option „/c“ einfügen, um den Befehl vor dem Beenden auszuführen.
Names Default To Here( 1 );
old_file = "C:\some directory\file1.ext";
new_file = "Z:\zdrive folder\file1.ext";
d1 = last modification date(old_file);
d2 = last modification date(new_file);
if (d1 != d1,
command_string = "/c copy" || new_file || " " || old_file;
status = RunProgram(
Executable( "CMD.EXE" ),
Options( {"/y", command_string} ),
ReadFunction( "text" )
);
);