Come posso rinominare in serie i file?


126

Ho un sacco di file denominati con un modello 99 - DescriptiveName.txte vorrei rimuovere il numero dalla parte anteriore, quindi ho appena DescriptiveName.txt.

Come posso fare questo? Posso farlo dalla riga di comando o c'è un'utilità che può farlo?

Risposte:


94

So che nel tuo titolo dici "in dos" ma ho l'impressione che tu stia solo cercando un modo per farlo e mi chiedo se quello sia il modo migliore.

Lo strumento migliore in assoluto che ho trovato per questo è Bulk Rename Utility .

Utilità di ridenominazione in blocco

Non è uno strumento da riga di comando, ma hanno una versione da riga di comando se vuoi davvero usarlo in quel modo.

Ho usato molto la versione della GUI, ed è molto potente, molto veloce ed estremamente facile da usare.

Oh, ed è GRATUITO per uso personale.


Sfortunatamente lo strumento non è gratuito per uso commerciale :(
AntonK

Ecco perché ho detto che era gratuito per uso personale.
Jim McKeeth,

2
Questo è uno strumento super rapido. Ha risolto il mio problema con 6.000 file in pochi secondi, usando diverse logiche di ricerca e sostituzione. È come usare Notepad ++ ma modificare migliaia di file. Un'ottima soluzione, grazie!
Peanuts,

59

Un piccolo script di PowerShell:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

In combinazione con espressioni regolari più complesse, questo potrebbe diventare qualcosa di simile:

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

Il che trasforma cose come '01 - Beginning.mp3 'in' Beginning - 01.mp3 '.

Utilizzare il -WhatIfparametro on Rename-Itemper verificare i nomi prima di emetterli.


1
@sysrqb, fai qualche ricerca in più.
Joey,

La sostituzione non richiede due espressioni di stringa? Il secondo ne ha due, il primo no. ... -replace '\d+ - ',''. Inoltre, credo che il primo sia migliore, semplicemente togliendo l'inizio usando regex. Anche se credo che dovresti includere l'ancora ^ all'inizio dell'espressione in modo che corrisponda solo ai nomi che iniziano con i numeri.
Xalorous

1
@Xalorous: Beh, potresti semplicemente provarlo. -replacepuò avere solo un argomento sul lato destro, nel qual caso il secondo è implicitamente la stringa vuota.
Joey,

Questo mi ha salvato ... Bulk Rename Utility si blocca ora e ho provato tante altre soluzioni. Questo è il modo migliore per le persone che sono a proprio agio con regexp. Grazie mille !!
Inkh Su Tesou,

24

Se vuoi davvero usare la riga di comando di Windows (se non vuoi scaricare qualcosa), puoi farlo in questo modo:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

La prima riga restituisce l'elenco dei file in un file chiamato fileList.txt. La seconda riga separa ciascuno dei nomi nell'elenco in 3 parti, il #, il "-" e il resto del nome. Per ognuno di questi esegue il comando rename.


2
Rimuovere la prima riga per semplificarla ed eseguire:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

So che questo è vecchio ma è ancora una risposta solida - solo% l (% L) dovrebbe essere% k (% K) [incremento dei token da% i (% I), quindi I, J, K ...]
Donald Byrd,

24

AntRenamer rende abbastanza semplice definire un modello di ridenominazione; ce ne sono molti già preparati (e fornisce un'anteprima delle azioni):

AntRenamer

Gratuito per uso personale e commerciale.


19

vecchia scuola:

È possibile eseguire un DIR e reindirizzare l'output su un file, come in DIR * .TXT> TEMP.BAT

Quindi utilizzare un editor per eliminare ciò che non è necessario e modificare le parti necessarie. Aggiungi un "@echo off" come riga superiore, salvalo ed eseguilo.


Ho ottenuto questo riferimento di pagina da un dottorato di vecchia scuola in questo: dostips.com/DosCommandIndex.htm ; È incredibile quello che puoi fare con (bene?) Il vecchio DOS!
nik,

16

Un'altra opzione: Massive File Renamer

Permette di rinominare facilmente più file ed estensioni di file . È molto veloce e semplice!

Per utenti avanzati e sviluppatori, è possibile utilizzare espressioni regolari .

Guardalo in azione:

inserisci qui la descrizione dell'immagine


1
Btw come possiamo selezionarlo per aprire tutti i file all'interno delle sottocartelle? Ho una cartella radice con circa 50 sottocartelle (ricorsivamente) e più file al loro interno.
Pacerier,

1
@Pacerier Penso che il selettore di file Java non lo consenta. Ho avuto l'idea di consentire la selezione di una cartella e la ricerca ricorsiva può essere inclusa. Lo noterò e lo aggiungerò in una versione futura!
IvanRF,

13

Uso lo strumento multi-rinomina di Total Commander (ctrl + M) per cose come questa. Il loro strumento utile, uno dei troppi da contare, è facile da usare e, se necessario, può anche utilizzare espressioni e modelli regolari. Oh, e ovviamente ti dà un'anteprima prima di apportare modifiche.

Questa è la terza o quarta domanda a cui ho risposto raccomandando Total Commander ... Dovrei ottenere una commissione da loro ;-)


11

Lo strumento di cui sono stato soddisfatto è ReNamer . Supporta anche il salvataggio delle regole di ridenominazione, che mi è stato utile, poiché molte volte faccio le stesse rinominazioni.

Di seguito è riportato un esempio di come eliminare il testo prima del primo trattino, ma ci sono molte altre regole che è possibile definire.

inserisci qui la descrizione dell'immagine


5

Ho usato Free Commander Portable (freeware) per questo con buoni risultati:

  1. Seleziona o Naviga verso i file o le directory da rinominare
  2. Premi [Ctrl-M] (o File> Rinomina più)
  3. compila i campi come ha senso per la tua circostanza
  4. verifica che l'anteprima mostri ciò che ti aspetti
  5. Partire!

4

Per utenti esperti e sviluppatori, suggerirei RegexRenamer .

Schermata di RegexRenamer

Professionisti:

  • UI molto semplice;
  • Espressioni regolari con cui gli sviluppatori hanno familiarità;
  • GPLv2;

Aspetti negativi:

  • Non è una riga di comando! :)

Impossibile farlo funzionare in modo ricorsivo per tutte le sottocartelle della cartella selezionata!
Luckylooke,


3

Ecco una soluzione da riga di comando --- un programma Java che ho scritto in modo specifico per semplificare il lavoro con "modelli" nei nomi dei file. È gratuito e open source, quindi sentiti libero di modificarlo:

RenameWand
http://renamewand.sourceforge.net/

Alcuni esempi di utilizzo rilevanti:

Rilascia tutto prima del "-"nel nome file:

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

Prepara un numero di 3 cifre al nome del file, ordinandolo in base all'ora dell'ultima modifica:

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

Riorganizza parti del nome file e cambia caso:

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"

3

Ho scoperto RenPhoric circa un mese fa. Superba. Ed è gratuito .

Nessuna interfaccia complicata e sono stato rapidamente in grado di rinominare esattamente come volevo. Espressione regolare in grado. Da allora non ho usato nient'altro.


2

Mi piace il WildRename di Cylog . È potente, ma facile da usare e ha molte funzionalità:

  1. veloce
  2. manipolazione di stringhe
  3. contatori
  4. jolly
  5. espressioni regolari
  6. sostituzione
  7. caso di conversione
  8. registrazione
  9. simulazione (mostra i risultati senza applicarli effettivamente)

inserisci qui la descrizione dell'immagine


2

Come sopra @zdan, l'ho fatto dalla riga di comando (usando "cmd.exe" in Windows). Ci volle un po 'di armeggiamento per il mio caso particolare, ma una piccola ricerca lo risolse.

Come zdan, ho generato l'elenco in un file TXT, quindi ho usato tokense delimsrinominato i file di conseguenza. Nel mio caso, ho iniziato con un elenco di file denominati in questo modo:

name-01-02-2012.csv

Volevo che la parte della data del file fosse nell'ordine y / m / d, con la parte "name" alla fine in modo che potesse leggere in questo modo:

2012-01-02-name.csv

Per fare questo in massa, ho usato il seguente codice. Nota che quando lo fai in questo modo, TUTTE le parti del nome del file sono considerate, inclusa l'estensione di ".csv". Mi ha preso per la prima volta.

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

La tokenssono le "parti" del nome del file, l' delimssono i separatori. Si noti che nel mio caso, avevo 2 delimitatori (un trattino e un punto).

Personalmente non mi interessa l'app "Rinomina in blocco". Come altri hanno già detto, la GUI è atroce e non molto intuitiva. Con un po 'di ricerca e una semplice codifica, queste cose possono essere fatte in modo molto efficiente e rapido.


2

Strumento di nome e riga di comando divertente molto potente, molto veloce ed estremamente facile da usare. "Trova e sostituisci testo" FART http://fart-it.sourceforge.net/ FUNZIONA GRANDE! può rinominare le parole anche nei file txt.

USO

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes

Qualche dettaglio in più? Ha rinominare i file ?
vonbrand,

Sì, -fopzione, come elencato.
user1016274,


2
@echo off
setlocal enabledelayedexpansion
impostare X = 5
impostare FOLDER_PATH =.
pushd% FOLDER_PATH%
per %% f in (*) fare se %% f neq% ~ nx0 (
    imposta "nomefile = %% ~ nf"
    imposta "nome file =! nome file: ~% X%!"
    ren "%% f" "! nomefile! %% ~ xf"
)
popd

salvarlo in un file batch ed eseguirlo


Questo va bene, ma come posso rendere X una variabile (passare come parametro)?
Kangkan,

@Kangkan in questo modo:set /p "X=Enter the value for X: "
Kidquick,

1

Uso la lavagna per amministrare i corsi in un'università. Quando scarico un compito in massa (in Blackboard, faccio clic sulla parte superiore della colonna di valutazione, quindi "Scarica file di assegnazione" Blackboard aggiunge un sacco di cose extra al nome del file, rendendolo spesso troppo lungo per essere valido su Windows.

Ecco come sono:

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

E questo è quello che volevo

studentname.docx

Quindi ho usato l'approccio consigliato da @zdan e @ gtr1971, aprendo una finestra di comando sulla cartella con i file all'interno (CMD.EXE). Quindi eseguire questo comando per inserire tutti i nomi di file in un documento.

dir /b >filelist.txt

Modifica il documento e rimuovi i nomi delle cartelle, ecc.

Utilizzare questo comando per sostituire il file aggiunto alla lavagna con solo il nome utente e l'estensione del file.

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

Spero che questo aiuti anche qualcun altro.



1

Ho sviluppato un'utilità di riga di comando ibrida JScript / batch denominata JREN.BAT che può rinominare file o cartelle eseguendo una ricerca di espressioni regolari e sostituendo i nomi. È puro script che verrà eseguito in modo nativo su qualsiasi macchina Windows a partire da XP. La documentazione completa è incorporata nello script.

Supponendo che JREN.BAT sia nella directory corrente o, meglio ancora, da qualche parte all'interno del percorso, l'attività di ridenominazione diventa banale.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

o

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

Esistono molte opzioni, inclusa l' /Sopzione che esegue in modo ricorsivo la ridenominazione nelle sottodirectory.


0

Se hai bisogno di un potere serio e sei disposto a sborsare i soldi ... PowerGrep è uno degli strumenti più potenti e versatili sul mercato ... puoi rinominare quasi tutto con PowerGrep ... anche la ricerca binaria e sostituire ... è stato creato da RegEx Guru, Jan Goyvaerts .

inserisci qui la descrizione dell'immagine


Questa utility è follemente costosa ...
Wizard79

Puoi usarlo gratuitamente a tempo indeterminato ... tuttavia, ne vale la pena ... Lo uso sempre.
Eddie B,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.