Copia i file usando RunProgramHo bisogno di aggiornare alcuni file di configurazione sui PC degli utenti di tanto in tanto, e voglio farlo automaticamente. In passato ho creato file .bat temporanei e li ho eseguiti con open (). Ora sto cercando di usare runprogram per fare la stessa cosa ma non funziona. Penso di esserci quasi - ogni aiuto è molto apprezzato.
Ecco il mio programma:
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"));
);Se le date non sono identiche, inserisce le virgolette doppie attorno al percorso di ciascun file e esegue una copia / y in una shell DOS. Sono in esecuzione Windows 7 btw. Ho eseguito la stringa in una finestra DOS e ha copiato il file senza problemi.
Ri: Copia i file usando RunProgramAlcune note su copia il file( da file, a file ) :
- Il to-file non può esistere, quindi devo cancellarlo prima (usando il file esiste e cancella il file )
- Il copia il file programma gestisce nomi di file unc-path (ad esempio \\ smith.company.com \ dir1 \ dir2 \ dir3 \ file.ext). Il comando di copia DOS sembrava avere problemi con quello.
Così, copia il file governa il giorno! Grazie ancora.
Ri: Copia i file usando RunProgramGrazie Justin e Craige. Penso che userò copia il file poiché questa è una soluzione più semplice. Ma è bello sapere come si usa eseguire il programma con comandi DOS incorporati.
Ri: Copia i file usando RunProgramUn po 'più di informazioni Qui , che spiega che dir e copy sono incorporati nell'interprete cmd.exe.
Ri: Copia i file usando RunProgramIn realtà c'è una funzione JSL (Copia file) che farà questo per te.
Se si preferisce utilizzare RunPogram, sarà necessario includere il comando copy con il percorso dei due file all'interno di un'opzione a stringa singola. Dovevo anche includere l'opzione "/ c" per eseguire il comando prima di terminare.
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" )
);
);