web-dev-qa-db-ja.com

Windowsでバッチを使用してサブストリングを置換することによりファイルの名前を変更する方法

"how-to-rename-file.jpg"のようにファイル名を変更したい"how-to-reuse-file.jpg" Windowsバッチファイルを使用して

つまりファイル名の1つまたは2つの単語だけを置き換えたい。

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

ファイルのループの別の例を示します。

更新:

私は最後の編集をすばやく入力するため、構文のいくつかのことを見逃しました。修正されたコードは次のとおりです。

@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:サブストリングの詳細については、こちらをご覧ください: http://ss64.com/nt/syntax-substring.htmlhttp://ss64.com/nt/syntax- replace.html

43
ElektroStudios

上記のコードはファイルの名前を変更しません-パスが問題であり、ソースファイル名が正しくありません。

これは、現在のフォルダー内のファイルに対して機能します-!名前に問題があります。

@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