2013-04-21 10 views
14

voglio rinominare il nome del file come "how-to rinominare -file.jpg"-"how-to riutilizzo -file.jpg " utilizzando un file batch di WindowsCome rinominare il file sostituendo sottostringa utilizzando lotti in Windows

Ie Voglio solo sostituire una o due parole in un nome di file.

+1

Si prega di aggiungere ciò che si è provato. Inoltre, abbiamo bisogno di più informazioni. –

+0

Considera di provare [Bulk Rename Here] (http://www.bulkrenameutility.co.uk/Download.php). –

+0

@casperOne hmmm ... un po 'troppo severo mi crede. –

risposta

33
@echo off 

Set "Filename=how-to-rename-file.jpg" 
Set "Pattern=rename" 
Set "Replace=reuse" 

REM Call Rename "%Filename%" "%%Filename:%Pattern%=%Replace%%%" 

Call Echo %%Filename:%Pattern%=%Replace%%% 
:: Result: how-to-reuse-file.jpg 

Pause&Exit 

Vi do altro esempio per un ciclo di file:

UPDATE:

ho perso alcune cose per la causa della sintassi' veloce di battitura mia ultima modifica, ecco il codice corretto:

@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For %%# in ("C:\Folder\*.jpg") Do (
    Set "File=%%~nx#" 
    Ren "%%#" "!File:%Pattern%=%Replace%!" 
) 

Pause&Exit 

PS: leggi qui sotto per saperne di più sulla sottostringa: http://ss64.com/nt/syntax-substring.html http://ss64.com/nt/syntax-replace.html

+4

Il secondo codice è esattamente quello di cui ho bisogno. Grazie mille per il tuo aiuto. Grazie anche per avermi fornito il link per saperne di più sulle stringhe Ho trovato questo link molto informativo :-) – Varun

+1

Perché hai usato 'Set" File = %% ~ nx # "' invece di un semplice Set '" File = %% # " '? –

+1

@Marco Demaio Per introdurre nuovi utenti nei modificatori riservati. – ElektroStudios

23

Il codice di cui sopra non rinominare i file - I percorsi sono un problema e il nome del file di origine non è corretta.

Questo funzionerà sui file nella cartella corrente, ad eccezione di quelli con! nei nomi sarà un problema.

@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For %%a in (*.jpg) Do (
    Set "File=%%~a" 
    Ren "%%a" "!File:%Pattern%=%Replace%!" 
) 

Pause&Exit 
+0

So che questo è un vecchio argomento, ma cosa dovrei aggiungere per definire una cartella invece di usare la cartella locale? – Schuere

+1

Posiziona 'pushd" c: \ folder "' sopra il ciclo, o usa 'cd/d" c: \ folder "' – foxidrive

+0

Funziona come un incantesimo! Grandi cose! –