Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Rinominare più file da lista txt
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Max433
Mortale devoto
Mortale devoto


Registrato: 23/06/07 12:30
Messaggi: 10

MessaggioInviato: 23 Giu 2007 12:49    Oggetto: * Rinominare più file da lista txt Rispondi citando

Salve Smile

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è. Very Happy
Pensavo a una cosa semplice come un bat, ma forse è troppo per lui.

Grazie a tutti in ogni caso, ciao. Ciao
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10046
Residenza: Tokelau

MessaggioInviato: 25 Giu 2007 10:45    Oggetto: Re: Rinominare più file da lista txt Rispondi citando

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 Wink

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 Smile

edit: avevo dimenticato la setlocal...
Top
Profilo Invia messaggio privato HomePage
Max433
Mortale devoto
Mortale devoto


Registrato: 23/06/07 12:30
Messaggi: 10

MessaggioInviato: 25 Giu 2007 17:36    Oggetto: Rispondi citando

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? Confused
Io ho provato a cambiare listanomi col nome del file di testo appunto, estensione dopo tokens e dir ovunque Razz 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 Smile
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10046
Residenza: Tokelau

MessaggioInviato: 26 Giu 2007 10:16    Oggetto: Rispondi citando

Max433 ha scritto:
potresti mica fornirmi un esempio completo di estensione e directory a tuo piacimento? Confused


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à... Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
Max433
Mortale devoto
Mortale devoto


Registrato: 23/06/07 12:30
Messaggi: 10

MessaggioInviato: 26 Giu 2007 11:39    Oggetto: Rispondi citando

Niente, nessun errore semplicemente non accade nulla. Embarassed

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 Ciao
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10046
Residenza: Tokelau

MessaggioInviato: 26 Giu 2007 13:49    Oggetto: Rispondi citando

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... Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
Max433
Mortale devoto
Mortale devoto


Registrato: 23/06/07 12:30
Messaggi: 10

MessaggioInviato: 26 Giu 2007 14:41    Oggetto: Rispondi citando

Il txt contiene solo i nuovi come nel tuo quote.
Vista la questione del numero avevo aggiunto uno degli zeri, non modificato il 7 Laughing Adesso ho modificato le due righe come da te detto.
Adesso mi dice i non atteso.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10046
Residenza: Tokelau

MessaggioInviato: 26 Giu 2007 15:48    Oggetto: Rispondi citando

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"... Confused
Top
Profilo Invia messaggio privato HomePage
Max433
Mortale devoto
Mortale devoto


Registrato: 23/06/07 12:30
Messaggi: 10

MessaggioInviato: 26 Giu 2007 16:02    Oggetto: Rispondi citando

Rimane tutto invariato. Se mi dici che a te funziona, la cosa si fà strana Shocked

Tra un rinomina e l'altro refresho il forum, cosa non si fà per i crampi alla mano Rolling
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10046
Residenza: Tokelau

MessaggioInviato: 27 Giu 2007 15:16    Oggetto: Rispondi

Max433 ha scritto:
Rimane tutto invariato. Se mi dici che a te funziona, la cosa si fà strana Shocked


io non l'ho mica provato... Rolling Eyes

comunque dovrebbe almeno scriverti sullo schermo frasi tipo

il programma ha scritto:
Rinomino: C:\test\00000000.tif in: 457834634_01


ad esempio...
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Vai a 1, 2, 3  Successivo
Pagina 1 di 3

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi