Idee per script con comandi DOS

di il
6 risposte

Idee per script con comandi DOS

Ciao a tutti,
questo è il mio primo post.
Volevo, se possibile, un aiuto da parte vostra su uno script che devo realizzare usando comandi dos.
Ho una directory "PIPPO" dove giornalmente mi arriva un file .zip. Ho la necessità di copiare e rinominare questo file .zip nella directory "PLUTO" in questo modo:
Nomefile+stringadata.zip
Es: Nomefile20110511.zip
Successivamente o contemporaneamente, lo stesso file .zip di "PIPPO" andrebbe unzippato in un'altra directory "LAVORO" e poi elaborato in un secondo momento.
Avete qualche idea?

Grazie per l'aiuto

6 Risposte

  • Re: Idee per script con comandi DOS

    Ciao e benvenuto.
    Allora per rinominare file e copiarli in DOS usi le seguenti istruzioni:

    Rename:
    RENAME [unità:][percorso]nomefile1 nomefile2
    Esempio D:\cartella\file1.txt file2.txt

    XCOPY:
    XCOPY sorgente [destinatinazione] [opzioni]
    Esempio XCOPY D:\cartella\file1.txt D:\cartella2\file1.txt

    Per quanto riguarda la procedura di unzip ti consiglio di usare a riga di comando (nel tuo script) il programma 7-zip http://www.7-zip.org
  • Re: Idee per script con comandi DOS

    Conviene rinominare durante la copia del file...
    for /f "delims=., tokens=1,2" %%a in ("%time%") do copy "C:\PIPPO\Untitled.zip" "C:\PLUTO\%date:/=-%_%%a.%%b.zip"
    Ora ti spiego il codice. for /f suddivide in token una stringa, un o un contenuto di un comando o di un file. delims specifica come dividere in token la stringa. tokens specifica quale/i token assegnare alla variabile %%a (e in questo caso anche %%b). Così eseguiamo il comando di copia. copia il file Untitled.zip della cartella PIPPO nella cartella PLUTO con il nome della data e dell'ora.

    Quando sono andato ad espandere la variabile d'ambiente date ho sostituito i caratteri / con - che avrebbero dato sempre errori, perchè nel DOS la barra (/) precede una lettera, chiamata parametro.

    Perchè abbiamo usato for? Semplicemente perchè è inutile specificare i secondi e i centesimi di secondo
  • Re: Idee per script con comandi DOS

    Per quanto riguarda la decompressione non so come aiutarti.
  • Re: Idee per script con comandi DOS

    Grazie per i suggerimenti, veramente molto utili.
    Ho messo in pratica quello che mi avete detto e questo è il risultato (sicuramente non elegantissimo, fa funzionante):
    ::ricavo la data nel formato yyyymmdd
    set data=%date:~6,4%%date:~3,2%%date:~0,2%
    
    ::Copio i file .zip più aggiornati da una directory all'altra.
    ::Rinomino i file con la data ricavata e avvio il 7-zip
    for /f "tokens=*"  %%a in ('dir /A-D/B C:\PIPPO\*.zip') do (echo f | xcopy "C:\PIPPO\%%a" "C:\PLUTO\%data%%%a" /Y/V/D  | call SEVENZIP.cmd %%a)
    
    ::Nel file SEVENZIP.cmd ho inserito questa linea dove gli passo gli zip di Pippo e li unzippo in LAVORO.
    C:\Programmi\7-Zip\7z.exe e "C:\PIPPO\%1" -o"C:\LAVORO" *.*
    
    Il prossimo step sarà quello di riuscire a prendere il file unzippato e processarlo... Purtroppo non ho ancora una soluzione
  • Re: Idee per script con comandi DOS

    Ciao, l'importante che fa quello che serve, l'eleganza è un fattore relativo!
    Prova a spiegarci cosa vorresti fare di preciso nel prossimo step, magari possiamo esserti ancora di aiuto.
    Ciao
  • Re: Idee per script con comandi DOS

    Nel prossimo step dovrei caricare il file .txt che ho unzippato su una tabella DB2...
    Stavolta non so proprio da dove cominciare.
Devi accedere o registrarti per scrivere nel forum
6 risposte