How to rename file by replacing substring using ba

2019-01-07 19:49发布

I want to rename file name like "how-to-rename-file.jpg" to "how-to-reuse-file.jpg" by using a Windows batch file

I.e. I only want to replace one or two words in a file name.

2条回答
小情绪 Triste *
2楼-- · 2019-01-07 20:15

The code above doesn't rename the files - The paths are an issue and the source filename is incorrect.

This will work on files in the current folder - except those with ! in the names will be a problem.

@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
查看更多
小情绪 Triste *
3楼-- · 2019-01-07 20:20
@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

I give you other example for a loop of files:

UPDATE:

I've missed some things in the syntax 'cause fast-typing my last edit, here is the corrected code:

@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: You can read here to learn more about substring: http://ss64.com/nt/syntax-substring.html http://ss64.com/nt/syntax-replace.html

查看更多
登录 后发表回答