Script per rinominare tutti i file presenti in una cartella
Un mio amico si è trovato in questa situazione:
domanda da un milione di dollari: sai se sotto windows è possibile eliminare uno specifico carattere dando la sua posizione all'interno del file in qualche modo? Intendo caratteri che non vengono letti dai programmi che rinominano a catena...tipo simboli giapponesi o cose così...che sotto dos vengono letti come "?"... Il fatto è che devo eliminare questo carattere da 500 file,
farli uno ad uno non è cosa...
La mia risposta da bravo Windowsiano:
Se il carattere si trova solo nel nome, potresti risolvere rapidamente selezionando tutti i file, tasto destro, rinomina, e windows te li rinomina tutti dando un unico nome (quello che imposti tu) e mettendo dietro un numero progressivo
La sua controrisposta, da bravo Linuxaro:
Non si può perché windows è ancora all'età della pietra e rinomina i primi file in 1 2 3 4 etc e, avendone 500, mi trovo tutti quelli della decina da 20 a 30 (per esempio) tra i 200 e i 300, idem per tutte le altre decine che si ritrovano in mezzo alla centinaia e non dove dovrebbero essere...
A questo punto era diventata una questione di principio:
Il carattere incriminato si trova in una posizione fissa del nome del file?
Sì di solito sono il primo carattere…
Detto fatto: ecco a voi lo script che rinomina tutti i file di una cartella, togliendo il primo carattere!
Copia tutti e soli i file in questione dentro c:\tempfiles e assicurati di non avere altre directory che si chiamano tempfiles nel pc, poi crea un file in un'altra cartella e chiamalo script.vbs, quindi incolla queste righe (facendo tasto destro, modifica) nel file script.vbs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where Path = '\\tempfiles\\'")
For Each objFile in colFiles
strnomefilecompleto = objfile.Name
arrnomefile = split(strnomefilecompleto,"\")
strnomefile = arrnomefile(2)
strnomefilenuovo = right(strnomefile,Len(strnomefile)-1)
objFile.rename("C:\tempfiles\" + strnomefilenuovo)
Next
Risposta: Credo abbia funzionato :P Devo imparare pure io il vbs… Grazie mille!