View Full Version : [Batch]Sostituire un file con un altro mantenendo il nome del precedente
skeleton
20-07-2009, 19:59
Ciao a tutti,
ho un altro problema in un codice batch...
Ecco cosa vorrei fare, ma non ci riesco:
ho alcuni file in F:\ e in ogni sua sottocartella che hanno nomi diversi, ma tutti la stessa estensione(*.txt) e vorrei sostituirli con uno mio il cui nome è regolamentazione.txt, pur mantenendo il loro nome originale...
...è fattibile la cosa???
Grazie in anticipo per il vostro aiuto...
john_revelator
21-07-2009, 09:24
Non sono sicuro di aver capito. In pratica tu hai un file regolamentazione.txt e vorresti che il suo contenuto rimpiazzasse quello di tutti i file txt presenti all'interno di f: e delle sue sottocartelle. E' così?
Necessiti di una soluzione in batch oppure ti andrebbe bene anche uno script in powershell?
skeleton
21-07-2009, 10:14
Ciao,
sì, esatto è proprio quello che vorrei fare...mi servirebbe in batch perchè è solo una piccola parte del programma che vorrei fare...poi non conosco niente di pawershell (non sapevo nemmeno che esistesse finchè non me l'hai citato tu per la prima volta)...quindi se possibile usare comandi Ms-Dos...
grazie per il vostro aiuto...
john_revelator
21-07-2009, 10:53
Con la powershell ho fatto una prova e ho risolto rapidamente (è molto più semplice della programmazione batch)
gci -recurse -filter "*.txt" | % {clear-Content -path $_.fullname -force; $contenuto =Get-Content "C:\path_file_con_cui_aggiornare_il_contenuto\miofile.txt"; add-Content $_.fullname -value $contenuto }
Per quel che riguarda il batch, con questa riga riesci a svuotare il contenuto di tutti i file
for /f "delims=," %a in ('dir *.txt /b /s') do echo. > %a
Resta da aggiornare il contenuto con quello dell'altro file. :fagiano:
skeleton
21-07-2009, 11:01
Grazie per la soluzione, ma non ho capito alcuni passaggi:
cosa significa "delims=," ???
e poi perchè hai messo ' davanti a dir e dopo /s
Comunque c'è un errore: NO %a, ma %%a ...
skeleton
21-07-2009, 19:31
Ok, 'dir *.txt /b /s' --> problema risolto: gli ' devono essere aggiunti perrchè all'interno sono presenti comandi e non file...
"delims=," --> significa dalla cartella in cui viene eseguito il file
Però non ho ancora capito come sostituire "delims=," se voglio aprire il mio prog da C:\ anzichè da F:\ pur producendo i suoi "effetti" in F:\ e non in C:\ da dove apro il programma...
Qualcuno può aiutarmi???
malocchio
22-07-2009, 09:02
Ok, 'dir *.txt /b /s' --> problema risolto: gli ' devono essere aggiunti perrchè all'interno sono presenti comandi e non file...
"delims=," --> significa dalla cartella in cui viene eseguito il file
Però non ho ancora capito come sostituire "delims=," se voglio aprire il mio prog da C:\ anzichè da F:\ pur producendo i suoi "effetti" in F:\ e non in C:\ da dove apro il programma...
Qualcuno può aiutarmi???
Ovvero hai questo batch da qualche parte nel c e vuoi che vada a lavorare in F:??
Nel file batch scrivi prima delle altre istruzioni
F:
cd \In questo modo sei posizionato sulla root dell'unità F:
Poi puoi fare altre cd oppure lavorare da lì.
Vedi il codice che ti avevo postato nell'altro 3d (http://www.hwupgrade.it/forum/showpost.php?p=28285131&postcount=4)
Lo puoi posizionare ovunque perché poi lui "si sposta" nella cartella specifica dove è stato pensato di dover lavorare.
skeleton
22-07-2009, 10:51
Ok, grazie, funziona benissimo...
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.