【发布时间】:2021-08-14 13:50:45
【问题描述】:
我为我孩子的童子军 BSA 部队运行 google drive 帐户,因此每次活动都从所有其他父母那里获得成百上千张照片。我创建了一个简单的小批量,允许我将获得的所有图片放在一个目录中,并将它们重命名为“Some_Event-1.png、Some_Event-2.png”等,并且在大多数情况下,这很有效。但是一些提供的文件名中有空格,这似乎在运行批处理时导致“找不到文件”问题。无论文件名是否有空格,如何让我的 FOR 循环中的重命名命令起作用?我在下面使用的代码:
(注意:我将标志传递给批处理而不是在批处理中使用用户输入。格式为“BATREN.BAT N EXT New_name”,其中 N/%1 是希望它开始的数字EXT/%2 处的编号是我要定位的扩展名,例如 jpg 或 png,而 New_name/%3 是要分配的新名称。)
@ECHO OFF
setlocal enabledelayedexpansion
DIR *.%2 /B>C:\Users\MyUser\AppData\Local\Temp\FileList.txt
Set /A CNT=%1
FOR /F %%i IN (C:\Users\MyUser\AppData\Local\Temp\FileList.txt) DO (
REN %%i %3-!CNT!.%2
SET /A CNT+=1
)
EXIT /B
我试图找到与我在这里所问的类似的答案,但似乎没有答案,如果已经有的话,我要么是瞎子要么是白痴,所以我为此道歉。
【问题讨论】:
-
打开命令提示符窗口,键入
for /?,按[ENTER]键,阅读使用信息,特别注意FOR /F语法。您需要使用"delims="或"tokens=*",以防止默认的空格或制表符分隔您的输出。然后你需要在你的REN命令中双引号你的文件名字符串,例如REN "P:\ath\To\file.ext" "newname.ext".
标签: for-loop batch-file whitespace