web-dev-qa-db-fra.com

Comment renommer un fichier en remplaçant la sous-chaîne à l'aide de batch dans Windows

Je veux renommer le nom de fichier comme "how-to -rename - file.jpg" to "how-to -reuse - file.jpg" en utilisant un fichier batch Windows

C'est à dire. Je veux seulement remplacer un ou deux mots dans un nom de fichier.

20
Varun
@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

Je vous donne un autre exemple pour une boucle de fichiers:

MISE À JOUR:

J'ai raté certaines choses dans la syntaxe, car en tapant rapidement ma dernière modification, voici le code corrigé:

@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: Vous pouvez lire ici pour en savoir plus sur la sous-chaîne: http://ss64.com/nt/syntax-substring.htmlhttp://ss64.com/nt/syntax- replace.html

43
ElektroStudios

Le code ci-dessus ne renomme pas les fichiers - Les chemins d'accès sont un problème et le nom de fichier source est incorrect.

Cela fonctionnera sur les fichiers du dossier actuel - sauf ceux avec! dans les noms sera un problème.

@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
32
foxidrive