| Precedente :: Successivo | 
	
	
		| Autore | Messaggio | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 23 Giu 2007 13:49    Oggetto: * Rinominare più file da lista txt |   |  
				| 
 |  
				| Salve   
 Cerco di esprimere meglio quello che ho riassunto nel titolo.
 
 Io ho un programma che mi dà come output dei file con semplice numero progressivo, tipo 0000001, 0000002 e così via. Ho la necessità di rinominarli tutti, seguendo l'ordine di un file di testo, dove uno per riga vi sono i nomi da attribuire ai file.
 Vista la mole di file vorrei automatizzare la cosa, ma avendo scarsa se non assente conoscenza nel campo chiedo a voi se possibile, come quando dove perchè.
   Pensavo a una cosa semplice come un bat, ma forse è troppo per lui.
 
 Grazie a tutti in ogni caso, ciao.
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 25 Giu 2007 11:45    Oggetto: Re: Rinominare più file da lista txt |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | Io ho un programma che mi dà come output dei file con semplice numero progressivo, tipo 0000001, 0000002 e così via. Ho la necessità di rinominarli tutti, seguendo l'ordine di un file di testo, dove uno per riga vi sono i nomi da attribuire ai file. 
 Pensavo a una cosa semplice come un bat, ma forse è troppo per lui.
 | 
 
 ... mica vero
   
 in pratica ti serve un ciclo FOR che prenda una riga per volta dal tuo file di testo e rinomini il file corrispondente...
 
 nel modo più semplice qualcosa del tipo:
 
 
  	  | Codice: |  	  | @echo off setlocal ENABLEDELAYEDEXPANSION
 set cnt=1
 for /F "tokens=* delims=:" %i IN ('type listanomi.txt') DO (
 set cnt=000000%cnt%
 set cnt=%cnt:~-7%
 ren %cnt% %i
 set /A cnt=%cnt%+1
 )
 | 
 
 dovrebbe funzionare. mancano le estensioni dei file, la cartella in cui si trovano ma direi che sono piccole modifiche
   
 edit: avevo dimenticato la setlocal...
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 25 Giu 2007 18:36    Oggetto: |   |  
				| 
 |  
				| Azz, non mi aspettavo una risposta così veloce e anche pronta all'uso! 
 Ovviamente cercando di completarlo con le piccole modifiche, ho sbagliato qualcosa...
 potresti mica fornirmi un esempio completo di estensione e directory a tuo piacimento?
   Io ho provato a cambiare listanomi col nome del file di testo appunto, estensione dopo tokens e dir ovunque
  solo danni.. 
 Se il numero di caratteri dopo il rename è diverso dall'originale dà mica problemi? me lo chiedevo per via della riga con gli '0'.
 
 Grazie, ciao
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 26 Giu 2007 11:16    Oggetto: |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | potresti mica fornirmi un esempio completo di estensione e directory a tuo piacimento?  | 
 
 basta cambiare la riga della rename... tipo in:
 
 
  	  | Codice: |  	  | ren C:\folder\%cnt%.dat %i | 
 
 così rinomini i file *.dat della cartella "folder"...
 
 
  	  | Max433 ha scritto: |  	  | Se il numero di caratteri dopo il rename è diverso dall'originale dà mica problemi? me lo chiedevo per via della riga con gli '0'. | 
 
 sì, nel bat sopra ho solo fatto il caso che il nome sia composto da 7 cifre...
 
 descrivimi che errori ti dà...
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 26 Giu 2007 12:39    Oggetto: |   |  
				| 
 |  
				| Niente, nessun errore semplicemente non accade nulla.   
 
  	  | Citazione: |  	  | @echo off setlocal ENABLEDELAYEDEXPANSION
 set cnt=1
 for /F "tokens=* delims=:" %i IN ('type C:\lista.txt') DO (
 set cnt=000000%cnt%
 set cnt=%cnt:~-7%
 ren C:\test\%cnt%.tif %i
 set /A cnt=%cnt%+1
 )
 | 
 
 Per la precisione del numero di caratteri, faccio un esempio chiaro e esattamente come servon a me. All'inizio l'avevo messo come info minima non pensando fosse troppo influente.
 
 Originale     Da ren
 
 00000001    215477235_05
 00000002    646174643_01
 00000054    132415761_13
 
 
 Vi sono quindi più caratteri dalla partenza. Scusa ancora e grazie del disturbo.
 
 Ciao
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 26 Giu 2007 14:49    Oggetto: |   |  
				| 
 |  
				| ok, quindi il tuo file di testo contiene sia il nome vecchio ed il nome nuovo per ogni riga? Oppure il tuo file di testo ha solo i nomi nuovi, tipo 
 
  	  | Codice: |  	  | 215477235_05 646174643_01
 132415761_13
 | 
 
 ?
 
 Se hai solo i nuovi, allora il bat funziona a patto che modifichi le due righe
 
 
  	  | Codice: |  	  | set cnt=000000%cnt% set cnt=%cnt:~-7%
 | 
 
 in
 
 
  	  | Codice: |  	  | set cnt=0000000%cnt% set cnt=%cnt:~-8%
 | 
 
 perchè vedo che il nome ha 8 caratteri...
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 26 Giu 2007 15:41    Oggetto: |   |  
				| 
 |  
				| Il txt contiene solo i nuovi come nel tuo quote. Vista la questione del numero avevo aggiunto uno degli zeri, non modificato il 7
  Adesso ho modificato le due righe come da te detto. Adesso mi dice i non atteso.
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 26 Giu 2007 16:48    Oggetto: |   |  
				| 
 |  
				| facciamo così: sopra la riga della ren metti questa: 
 
  	  | Codice: |  	  | echo Rinomino: C:\test\%cnt%.tif in: %i | 
 
 e vediamo cosa dice prima dell'errore "i non atteso"...
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 26 Giu 2007 17:02    Oggetto: |   |  
				| 
 |  
				| Rimane tutto invariato. Se mi dici che a te funziona, la cosa si fà strana   
 Tra un rinomina e l'altro refresho il forum, cosa non si fà per i crampi alla mano
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 27 Giu 2007 16:16    Oggetto: |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | Rimane tutto invariato. Se mi dici che a te funziona, la cosa si fà strana  | 
 
 io non l'ho mica provato...
   
 comunque dovrebbe almeno scriverti sullo schermo frasi tipo
 
 
  	  | il programma ha scritto: |  	  | Rinomino: C:\test\00000000.tif in: 457834634_01 | 
 
 ad esempio...
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 27 Giu 2007 19:03    Oggetto: |   |  
				| 
 |  
				| Da come ne parlavi sembrava na certezza matematica, sorry.   
 Io stò provando con il bat e il txt in C:\ e i file .tif in C:\test. 20 file come altrettanti ne son segnati nel txt, numero progressivo 8 cifre  come base.
 
 Con questo bat:
  	  | Codice: |  	  | @echo off setlocal ENABLEDELAYEDEXPANSION
 set cnt=1
 for /F "tokens=* delims=:" %i IN ('type C:\lista.txt') DO (
 set cnt=0000000%cnt%
 set cnt=%cnt:~-8%
 ren C:\test\%cnt%.tif %i
 set /A cnt=%cnt%+1
 )
 | 
 Ricevo:
 C:\>ren.bat
 \lista.txt') non atteso.
 
 Con quest'altro, con il solo nomefile.txt:
  	  | Codice: |  	  | @echo off setlocal ENABLEDELAYEDEXPANSION
 set cnt=1
 for /F "tokens=* delims=:" %i IN ('type lista.txt') DO (
 set cnt=0000000%cnt%
 set cnt=%cnt:~-8%
 ren C:\test\%cnt%.tif %i
 set /A cnt=%cnt%+1
 )
 | 
 Ricevo:
 C:\>ren.bat
 i non atteso.
 
 Poi in maniera malsana ho cambiato %i in %%i e almeno mi riporta
 C:\>ren.bat
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 Sintassi del comando errata.
 
 20 volte, come i file...
 
 Non sò se o cosa voglia dire, e purtroppo non sò come poterti aiutare a capire l'inghippo.
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 27 Giu 2007 19:30    Oggetto: |   |  
				| 
 |  
				| e invece mi hai proprio suggerito l'errore   
 %i deve essere sostituito con %%i , sia nella riga del FOR sia nella riga della REN...
 
 in ogni caso aggiugi la ECHO come ti dicevo qualche post sopra... così vediamo se ci sono altri errori nella sintassi della REN ...
 
 e forse devi ancora aggiungere l'estensione alla fine della REN, tipo
 
 
  	  | Codice: |  	  | ren C:\test\%cnt%.tif %%i.tif | 
 
 altrimenti perdi il .tif al fondo...
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 27 Giu 2007 19:45    Oggetto: |   |  
				| 
 |  
				| Spunta qualcosa   
  	  | Codice: |  	  | @echo off setlocal ENABLEDELAYEDEXPANSION
 set cnt=1
 for /F "tokens=* delims=:" %%i IN ('type lista.txt') DO (
 set cnt=0000000%cnt%
 set cnt=%cnt:~-8%
 echo Rinomino: C:\test\%cnt%.tif in: %%i.tif
 ren C:\test\%cnt%.tif %%i.tif
 set /A cnt=%cnt%+1
 )
 | 
 
 C:\>ren.bat
 Rinomino: C:\test\1.tif in: 060700891_01.tif
 Sintassi del comando errata.
 Rinomino: C:\test\1.tif in: 070800012_05.tif
 Sintassi del comando errata.
 Rinomino: C:\test\1.tif in: 067200000_09.tif
 Sintassi del comando errata.
 Rinomino: C:\test\1.tif in: 135431313_12.tif
 Sintassi del comando errata.
 Rinomino: C:\test\1.tif in: 123457436_45.tif
 Sintassi del comando errata.
 etc etc...
 
 
 EDIT
 
 ho modificato set cnt=1 con set cnt=* e succede questo
 
 Rinomino: C:\test\*.tif in: 060700891_01.tif
 Nome duplicato o impossibile
 trovare il file.
 Nome duplicato o impossibile
 trovare il file.
 Nome duplicato o impossibile
 trovare il file.
 Nome duplicato o impossibile
 trovare il file.
 Operando mancante
 
 I file sembrano rinominati correttamente, (proverò con delle copie dei file reali, adesso son fittizi e non ho riscontro), non mi sembra comunque troppo corretto
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 28 Giu 2007 10:04    Oggetto: |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | Spunta qualcosa   | 
 
 ok, in pratica fallisce l'incremento. allora usiamo 2 variabili
 
 
  	  | 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
 )
 | 
 
 così "conta" farà 1, 2, 3, 4... e cnt farà 00000001, 00000002, 00000003, 00000004...
 
 vediamo se abbiamo finito
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 28 Giu 2007 14:33    Oggetto: |   |  
				| 
 |  
				| Niente. 
 C:\>ren.bat
 Rinomino: C:\test\.tif in: 060700891_01.tif
 Impossibile trovare il file specificato.
 Rinomino: C:\test\.tif in: 070800012_05.tif
 
 Comunque ho testato per bene la versione cnt=*, anche in diversi ambiti, e funziona correttamente. Segue l'ordine e non mi son trovato file non rinominati o sbagliati. Terrei sta versione così ti evito altri sbattimenti, salvo che mi illumini di quache possibile problema.
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 28 Giu 2007 16:05    Oggetto: |   |  
				| 
 |  
				| ho trovato ancora un errore: poi dovrei aver finito davvero: 
 
  	  | 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
 )
 | 
 
 ... ovvero ho dimenticato che nella espansione ritardata delle varibili devo usare il ! invece del % per le variabili d'ambiente (ma non per quelle del FOR...)
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 28 Giu 2007 18:28    Oggetto: |   |  
				| 
 |  
				| Un'epopea   
 C:\>ren.bat
 Rinomino: C:\test\0000001  .tif in: 060700891_01.tif
 Sintassi del comando errata.
 
 Intanto imparo qualcosa.
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 29 Giu 2007 12:51    Oggetto: |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | Un'epopea   | 
 
 oppure un'impresa epica
   
 
 
  	  | Max433 ha scritto: |  	  | Rinomino: C:\test\0000001  .tif in: 060700891_01.tif Sintassi del comando errata.
 | 
 
 questo è facile: copiando ed incollando dal forum al file di testo ti sei portato dietro degli "spazi" alla fine delle righe: rimuovili tutti
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| Max433 Mortale devoto
 
  
  
 Registrato: 23/06/07 13:30
 Messaggi: 10
 
 
 | 
			
				|  Inviato: 29 Giu 2007 16:00    Oggetto: |   |  
				| 
 |  
				| Azz, ne avevo tolti, qualcosa m'è scappato e pensavo a chissà cos'altro perchè mancava uno zero, invece tutto perfetto adesso. 
 Grazie davvero, impresa finita definitivamente!
 
 Ciao
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11860
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 29 Giu 2007 16:12    Oggetto: |   |  
				| 
 |  
				|  	  | Max433 ha scritto: |  	  | Azz, ne avevo tolti, qualcosa m'è scappato e pensavo a chissà cos'altro perchè mancava uno zero, invece tutto perfetto adesso. | 
 
 meno male, incominciavo (solo?
  ) a fare brutta figura...  |  | 
	
		| Top |  | 
	
		|  | 
	
		|  |