windows - For 循环运行两次,但仅针对第一个文件

标签 windows for-loop batch-file command-line

我写了一个简单的.bat附加字符串 "somethingnew" 的文件.txt前面文件:

for %%x in (*.txt) do ren "%%x" "somethingnew%%~nx.txt"

但是当我运行它时,它会正确重命名每个文件,但最后它会再次重命名第一个文件。

例如,如果有2个文件1.txt2.txt那么就会发生这样的情况:

  • 1.txt变成somethingnew1.txt

  • 2.txt变成somethingnew2.txt

  • somethingnew1.txt变成somethingnewsomethingnew1.txt

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

谢谢。

最佳答案

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

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

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

关于windows - For 循环运行两次,但仅针对第一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66168838/

相关文章:

窗口命令 : Loop FOR with file containing space in his path

c++ - -l : option via Eclipse

ruby-on-rails - 在 Windows 和 Linux/OS X 的 Gemfile 中指定不同的 Ruby 版本(例如 1.9.3 与 2.1)?

c++ - C++指针在for循环中被覆盖

java - 假设变量无法解析为变量?

batch-file - 如何编写一个基本的批处理过程以将文件从一个位置复制到 Windows 7 上的另一个位置

itoa() 的 C++ 标准替代方法,用于将 int 转换为 base 10 char*

c - 嵌套for循环,运行系列10000次

windows - ffmpeg 如何将音频转换为 aac 但保持旧文件使用的比特率?

windows - 简单的 Windows 批处理移动文件夹