Process.Start(riga comando)

giovedì 15 gennaio 2009 - 17.34

kintaro Profilo | Junior Member

Ciao a tutti, mi chiedevo se volessi provare a zippare i file con il win rar da riga comando potrei fare una cosa del genere?

myprocess.StartInfo.FileName = "C:\\Programmi\\WinRAR\\WinRAR a " + myfile + " " + nomefileZip;
myprocess.Start();

dove myfile e il file da aggiungere sullo zip e nomezip e il file zip

ho detto "del genere "perchè non funziona naturalmente :)

naturalmente se metto la mia riga di comando dentro un bat e lo eseguo con il metodo Start funziona ... ma ora volevo solo togliermi questo dubbio!!!

Grazie in anticipo

ciao
Fabio

aiedail92 Profilo | Expert

Ciao

I parametri della riga di comando non li devi passare nel nome del file, ma nella proprietà apposita:

myProcess.StartInfo.FileName = @"C:\Programmi\WinRAR\WinRAR.exe"; myProcess.StartInfo.Arguments = "a " + myfile + " " + nomefileZip; myProcess.Start();

Oppure più velocemente:

Process.Start(@"C:\Programmi\WinRAR\WinRAR.exe", "a " + myfile + " " + nomefileZip);

Luca

kintaro Profilo | Junior Member

Grazie Luca funziona!!!!

Ora senza abusare della tua gentilezza ti volevo chiedere se se dovessi anche crearlo lo ZIP per aggiungerci i file??
mi sai dare un consiglio?

io avevo utilizzato qst modo :

using (FileStream fileZip = File.Create(nomefileZip))
{
fileZip.Dispose();
fileZip.close();
}

ma poi qnd faccio add archivie mi dice che il file è danneggiato!!

io ho notato infatti che se faccio il crea archivio vuoto manualmente ho un file di 22k mentre qnd lo creo con il mio codice è di 0 k

come posso ovviare questo problema?

grazie

Fabio

aiedail92 Profilo | Expert

Ho controllato la documentazione e ho visto che la sintassi è questa:

WinRar.exe <command> -<switches> <archive> <files>

Quindi in realtà il comenda che devi passare diventa così:

"a " + nomeFileZip + " " + fileDaAggiungere

Inoltre il file zip o non deve esistere, oppure deve essere un file già valido.

Quindi non è necessario che te crei il file prima di chiamare WinRar dalla riga di comando, perchè se il file non esiste viene chiamato automaticamente.

Controllando il codice di ritorno del processo poi puoi sapere se l'operazione è andata a buon fine, e in caso contrario eliminare il file e ritentare:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Luca

kintaro Profilo | Junior Member

Ciao Luca, ti volevo ringraziare per il tempo dedicatomi e per la cura e l'attenzione della tua risposta!!

Funziona tutto!!

ciao

Fabio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5