我想在每个 jpg 文件名的开头添加 1 个字符。我制作了以下批处理文件:
for %%A in (*.jpg) do ren "%%~A" s"%%~nA%%~xA"
这几乎完美地工作,但是第一个文件被处理了两次:
ssNL201501
sNL201502
sNL201503
我做错了什么?
答案1
这几乎完美地工作,但第一个文件被处理了两次
for %%A in (*.jpg) do ren "%%~A" s"%%~nA%%~xA"
您需要使用:
for /f %%A in ('dir /b *.jpg') do ren "%%~A" s"%%~nA%%~xA"
作为德本汉姆在他的回答中解释道在多个文件名末尾添加“text”:
请注意,务必使用
FOR /F
而不是简单的FOR
。在开始迭代之前,FOR /F
会收集命令的整个结果DIR
,而简单的FOR
会在内部缓冲区已满后开始迭代,这增加了多次重命名同一文件的风险。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 目录- 显示文件和子文件夹的列表。
- 为了- 有条件地对多个文件执行命令。
- 对于/f- 循环命令以执行另一个命令的结果。