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.txt2.txt 那么会发生这种情况:

我发现了类似 的问题,但是,for 循环 运行 对每个文件两次,而在这里它对第一个文件 运行s 两次,所以我'我不确定解决方案是什么。

谢谢。

简单的 FOR 循环可以获取已经重命名的文件,这是因为 for 循环获取一个文件名,执行块代码,然后获取下一个文件名。

在执行块代码之前,FOR /F 循环将获取命令的完整输出。

for /F "delims=" %%x in ('dir /b *.txt') do (
  ren "%%x" "somethingnew%%~nx.txt"
)