@echo off
Setlocal enabledelayedexpansion
Set "Pattern=rename"
Set "Replace=reuse"
For %%a in (*.jpg) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
这会重命名具有子串rename
的.jpg .Ref:How to rename file by replacing substring using batch in Windows任何人都可以让我理解,For loop
如何完成这项工作?另外:是否可以在此处使用/f
开关来摆脱Access Denied
。
答案 0 :(得分:2)
示例中的for循环将循环遍历当前目录中以.jpg
结尾的每个文件。
循环%%a
的每次迭代都将扩展为当前.jpg
文件的名称。
然后,rename命令将%%a
(当前.jpg
文件)的名称更改为指定的名称,该名称是!File!
变量的修改版本。
"!File:%Pattern%=%Replace%!"
- 这是字符串操作 - 请参阅DOS Tips。它将扩展为!File!
等于%Pattern%
的变量%Replace%
的内容。
因此,如果您将变量%test%
设置为等于"Test_1_variable"
并运行echo %test:_= %
,则会输出Test 1 variable
。
答案 1 :(得分:1)
测试:它使用for / f,以便文件不会重命名两次。
@echo off
Setlocal enabledelayedexpansion
Set "Pattern=rename"
Set "Replace=reuse"
For /f "delims=" %%a in ('dir /b /a-d *.jpg ') Do (
Set "File=%%~na"
Ren "%%a" "!File:%Pattern%=%Replace%!%%~xa"
)