Risposte:
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 .
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.
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 -WhatIf
parametro on Rename-Item
per verificare i nomi prima di emetterli.
... -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.
-replace
può avere solo un argomento sul lato destro, nel qual caso il secondo è implicitamente la stringa vuota.
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.
for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
AntRenamer rende abbastanza semplice definire un modello di ridenominazione; ce ne sono molti già preparati (e fornisce un'anteprima delle azioni):
Gratuito per uso personale e commerciale.
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.
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:
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 ;-)
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.
Ho usato Free Commander Portable (freeware) per questo con buoni risultati:
Per utenti esperti e sviluppatori, suggerirei RegexRenamer .
Professionisti:
Aspetti negativi:
Il modo più semplice sarebbe usare Rename Master .
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>"
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.
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 tokens
e delims
rinominato 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 tokens
sono le "parti" del nome del file, l' delims
sono 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.
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.
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
-f
opzione, come elencato.
Lo script Multi Rename è un'alternativa open source allo strumento Multi Rename di Total Commanders che puoi guidare tramite script. Può utilizzare i plugin TC per informazioni sui metadati.
@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
set /p "X=Enter the value for X: "
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.
Ecco un altro semplice programma chiamato File Attribute Changer che puoi usare per rinominare i file. È un programma portatile, quindi puoi portarlo su un'unità USB.
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' /S
opzione che esegue in modo ricorsivo la ridenominazione nelle sottodirectory.
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 .