Domanda Risolto Rinominare più file da documento di testo

NioSciax

Utente Silver
22 Aprile 2011
21
4
4
60
Buon pomeriggio a tutti,

mi occupo di help desk annessa alla contabilità presso un’azienda di sviluppo software, nessuno è riuscito a rispondermi (o forse non troppo interessati al quesito);

consideriamo che ho circa 20.000 fatture con firma digitale (p7m) di un cliente da inserire ad un portale. Dopo una giornata di lavoro sono riuscito a trovare e modificare uno script che convertisse tutte le fatture in (xml) solo che dopo la conversione, invece di tenere il nominativo originale della fattura, modifica il nome del file con un numero progressivo partendo da zero.
Attualmente la mia unica possibilità è rinominare le fatture una ad una con il corretto nominativo e codice richiesto (che ho prontamente inserito in un file di testo per il copia+incolla), rovistando su internet, un simpatico collaboratore aveva risolto un problema simile con un semplice script in .bat, dove andava a prendere da un file di testo la prima stringa e rinominava il file richiesto in un’altra cartella (posso darvi anche il codice dello script volendo).

Sono disposto anche a soluzioni diversi, scusatemi se la categoria non è la corretta.
Grazie mille a tutti!
 
Immagino tu stia lavorando su Eindows, perché non creare uno script in powershell?
Però mi sorge un dubbio sei sicuro che i nomi originali corrispondano a quelli attuali dei file?
Nel senso, il file 01.xml corrisponde al nome_vecchio_file che hai salvato?
 
Ultima modifica:
Immagino tu stia lavorando su Eindows, perché non creare uno script in powershell?
Però mi sorge un dubbio sei sicuro che i nomi originali corrispondano a quelli attuali dei file?
Nel senso, il file 01.xml corrisponde al nome_vecchio_file che hai salvato?
Ciao, utilizzo Windows a lavoro, sì.

Ti confermo che corrispondono, all’interno del file ha il codice identificativo corretto!
Messaggio unito automaticamente:

Questo è lo script che avevo trovato come soluzione ma che non mi funziona (ovviamente ho cambiato i formati in xml, provato a modificare il set cnt, cambiato la destinazione delle cartelle, ma come avvio lo script si chiude..

Codice:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set conta=1
for /F "tokens=* delims=:" %%i IN ('type lista.txt') DO (
set cnt=0000000!conta!
set cnt=!cnt:~-8!
echo Rinomino: C:\test\!cnt!.tif in: %%i.tif
ren C:\test\!cnt!.tif %%i.tif
set /A conta=!conta!+1
)
 
Un esempio di input e output aiuterebbe a farci capire esattamente cosa stai cercando di fare, anche perché hai descritto un problema ma non hai posto alcuna domanda. Da quanto ho capito hai una cartella contenente tanti file xml il cui nome è un numero che si incrementa progressivamente partendo da zero. Quindi hai una cartella di questo tipo:
Codice:
Fatture
├── 0.xml
├── 1.xml
├── 2.xml
├── ...
├── 19999.xml
├── 20000.xml
└── names.txt
In questa cartella hai anche un file (chiamiamolo names.txt) in cui nella prima riga c'è scritto il nome che dovrà avere il file 0.xml, nella seconda riga c'è scritto il nome che dovrà avere il file 1.xml, e così via. Diciamo che questo è il contenuto del file names.txt
Codice:
fattura zero
fattura uno
fattura due
fattura tre
...
fattura ventimila

Tu vuoi uno script che assegna ad ogni file il nome che dovrà avere. In bash (Linux) si risolve così:
Bash:
cnt=0; cat names.txt | while read line; do mv "$cnt.xml" "$line.xml"; cnt=$((cnt+1)); done
In batch (.bat di Windows) e in powershell script (.ps1 di Windows) non lo so come si fa, ma volendo puoi installarti WSL, Cygwin o una virtual machine ed usare bash; oppure puoi provare tu stesso a convertire il Bash in Batch, visto che è solamente una riga.

Ovviamente se il problema dovesse essere diverso da come l'ho descritto io (anche solo di pochissimo) lo script non funziona. Se posti un esempio dettagliato (segui il mio stile) io posso provare a risolverti il problema usando uno dei linguaggi che conosco, ma in ogni caso ricordati di fare un backup della cartella originale perché non posso garantirti il corretto funzionamento di qualcosa che non posso testare.
 
Hai completamente preso appieno la problematica.

In realtà questa mattina ho risolto il problema dalla base, ovvero la conversione. Sono riuscito in qualche modo a convertire i file tenendo il nome originale, grazie mille del riscontro.

PROBLEM SOLVED!