我希望我没有把任何人与这个头衔混淆,我不能在短线上很好地描述我的问题......我有一个包含多个文件的文件夹(所有文件都有相同的扩展名)和我想重命名所有这些数字。它应该很容易,因为每次替换名称时批处理文件都必须计数。但我可能是错的。
除了一些基础知识之外我不太了解批次,但我总是乐于了解更多。
提前感谢您的回答!
答案 0 :(得分:2)
创建一个空文件夹,在重命名文件时将文件移动到新文件夹,然后将它们移回旧文件夹会更简单。这样,重命名现有文件或迭代已经重命名的文件就不会有任何问题。
我原来的解决方案:
@echo off
setlocal enabledelayedexpansion
set folder=C:\path\to\existing\folder
md %folder%.TEMP
set /a n = 0
for %%f in ("%folder%\*") do (
set /a n += 1
move "%%f" "%newfolder%\!n!%%~xf"
)
move "%folder%.TEMP\*" "%folder%"
rd %folder%.TEMP
更新了@ Compo的评论,按照创建的时间顺序对带有前导零的文件进行编号(将/ TC更改为/ TW以使用上次修改日期):
@echo off
setlocal enabledelayedexpansion
set folder=C:\path\to\existing\folder
md %folder%.TEMP
set /a n = 0
for /f "delims=" %%f in ('dir/b/a-d-s-l/od/tc "%folder%"') do (
set /a n += 1
set zn=0000000!n!
set zn=!zn:~-8!
move "%%f" "%newfolder%\!zn!%%~xf"
)
move "%folder%.TEMP\*" "%folder%"
rd %folder%.TEMP