【问题标题】:Want to understand a for loop statement of bat file想了解一个bat文件的for循环语句
【发布时间】:2014-03-03 14:01:03
【问题描述】:
@echo off
Setlocal enabledelayedexpansion
Set "Pattern=rename"
Set "Replace=reuse"
For %%a in (*.jpg) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
这重命名 .jpg 具有子字符串 rename .Ref: How to rename file by replacing substring using batch in Windows 谁能让我明白,For loop 是如何完成这项工作的?另外:是否可以在这里使用/f 开关来摆脱Access Denied。
【问题讨论】:
标签:
windows
batch-file
command-line
cmd
command-prompt
【解决方案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"
)
【解决方案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。