想要了解bat文件的for循环语句

时间:2014-02-06 14:47:18

标签: windows batch-file command-line cmd command-prompt

@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

2 个答案:

答案 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"
)