使用 FOR 重命名 Windows 中的文件
Renaming files in Windows using FOR
任务是使用命令行将五个随机文件重命名为renamed1.ren、renamed2.ren、...、renamed5.ren。这是我的结论:
set i=1
for /f "tokens=*" %f in ('dir /b') do (
ren %f renamed%i%.ren
set /a i+=1)
我希望 i
在每次迭代中递增,但这没有用。我可以改变什么?
SETLOCAL ENABLEDELAYEDEXPANSION
set i=1
for /f "tokens=*" %%f in ('dir /b') do (
ren %%f renamed!i!.ren
set /a i+=1)
在块语句 (a parenthesised series of statements)
中,解析 整个 块并执行 then。块中的任何 %var%
将被该变量的值替换 在块被解析时 - 在执行块之前 - 同样的事情适用于 FOR ... DO (block)
.
因此,IF (something) else (somethingelse)
将在遇到 IF
时使用 %variables%
的值执行。
克服此问题的两种常见方法是 1) 使用 setlocal enabledelayedexpansion
并使用 !var!
代替 %var%
来访问 var
的更改值或 2)调用子例程以使用更改后的值执行进一步处理。
在批处理文件中,循环控制变量引用需要 %
加倍。
这是一个不需要延迟膨胀的单衬垫。
从命令行:
for /f "tokens=1* delims=:" %A in ('dir /b^|findstr /n "^"') do @ren "%B" "renamed%A.ren"
在批处理脚本中
@echo off
for /f "tokens=1* delims=:" %%A in ('dir /b^|findstr /n "^"') do ren "%%B" "renamed%%A.ren"
任务是使用命令行将五个随机文件重命名为renamed1.ren、renamed2.ren、...、renamed5.ren。这是我的结论:
set i=1
for /f "tokens=*" %f in ('dir /b') do (
ren %f renamed%i%.ren
set /a i+=1)
我希望 i
在每次迭代中递增,但这没有用。我可以改变什么?
SETLOCAL ENABLEDELAYEDEXPANSION
set i=1
for /f "tokens=*" %%f in ('dir /b') do (
ren %%f renamed!i!.ren
set /a i+=1)
在块语句 (a parenthesised series of statements)
中,解析 整个 块并执行 then。块中的任何 %var%
将被该变量的值替换 在块被解析时 - 在执行块之前 - 同样的事情适用于 FOR ... DO (block)
.
因此,IF (something) else (somethingelse)
将在遇到 IF
时使用 %variables%
的值执行。
克服此问题的两种常见方法是 1) 使用 setlocal enabledelayedexpansion
并使用 !var!
代替 %var%
来访问 var
的更改值或 2)调用子例程以使用更改后的值执行进一步处理。
在批处理文件中,循环控制变量引用需要 %
加倍。
这是一个不需要延迟膨胀的单衬垫。
从命令行:
for /f "tokens=1* delims=:" %A in ('dir /b^|findstr /n "^"') do @ren "%B" "renamed%A.ren"
在批处理脚本中
@echo off
for /f "tokens=1* delims=:" %%A in ('dir /b^|findstr /n "^"') do ren "%%B" "renamed%%A.ren"