For 循环运行两次但只针对第一个文件
For loop runs twice but only for the first file
我写了一个简单的 .bat
文件,它在 .txt
文件的前面附加了字符串 "somethingnew"
:
for %%x in (*.txt) do ren "%%x" "somethingnew%%~nx.txt"
但是当我 运行 它时,它正确地重命名了每个文件,但最后它再次重命名了第一个文件。
例如,如果有 2 个文件 1.txt
和 2.txt
那么会发生这种情况:
1.txt
变为 somethingnew1.txt
2.txt
变为 somethingnew2.txt
somethingnew1.txt
变为 somethingnewsomethingnew1.txt
我发现了类似 的问题,但是,for 循环 运行 对每个文件两次,而在这里它对第一个文件 运行s 两次,所以我'我不确定解决方案是什么。
谢谢。
简单的 FOR 循环可以获取已经重命名的文件,这是因为 for 循环获取一个文件名,执行块代码,然后获取下一个文件名。
在执行块代码之前,FOR /F 循环将获取命令的完整输出。
for /F "delims=" %%x in ('dir /b *.txt') do (
ren "%%x" "somethingnew%%~nx.txt"
)
我写了一个简单的 .bat
文件,它在 .txt
文件的前面附加了字符串 "somethingnew"
:
for %%x in (*.txt) do ren "%%x" "somethingnew%%~nx.txt"
但是当我 运行 它时,它正确地重命名了每个文件,但最后它再次重命名了第一个文件。
例如,如果有 2 个文件 1.txt
和 2.txt
那么会发生这种情况:
1.txt
变为somethingnew1.txt
2.txt
变为somethingnew2.txt
somethingnew1.txt
变为somethingnewsomethingnew1.txt
我发现了类似
谢谢。
简单的 FOR 循环可以获取已经重命名的文件,这是因为 for 循环获取一个文件名,执行块代码,然后获取下一个文件名。
在执行块代码之前,FOR /F 循环将获取命令的完整输出。
for /F "delims=" %%x in ('dir /b *.txt') do (
ren "%%x" "somethingnew%%~nx.txt"
)