我正在使用窗口操作系统,我下载视频作为系列课程。我想按日期订购这些视频,并为第一个视频添加前缀编号为1比2,3,我在这里找到答案How to rename and add incrementing number suffix on multiple files in Batch Script?它可以在文件名中添加数字,但只能按名称排序日期。感谢和抱歉我的英语。
答案 0 :(得分:0)
这是aschipfl在评论中建议的简单实现:
@echo off
setlocal enableDelayedExpansion
set /a n=0
for /f "delims=" %%F in ('dir /b /od') do (
set /a n+=1
ren "%%F" "!n!_%%F"
)
但是有两个潜在的问题:
1)FOR / F命令的默认EOL字符为;
- 如果文件名以;
开头,则会跳过它。简单的解决方案是将EOL设置为无法在文件名中出现的字符 - :
是一个不错的选择。
2)如果文件名包含!
字符,则重命名将失败,因为已启用延迟扩展,并且在延迟扩展之前展开%%F
。解决方案是将文件名保存到变量,然后在循环中切换延迟扩展ON和OFF
@echo off
setlocal disableDelayedExpansion
set /a n=0
for /f "eol=: delims=" %%F in ('dir /b /od') do (
set "file=%%F"
set /a n+=1
setlocal enableDelayedExpansion
ren "!file!" "!n!_!file!"
endlocal
)
有一个更简单的选项 - 使用FINDSTR /N
在DIR /B /OD
输出前加上行号,然后使用FOR /F
来解析数字和文件名。现在不需要计数器变量或延迟扩展。
@echo off
for /f "delims=: tokens=1*" %%A in ('dir /b /od ^| findstr /n "^"') do ren "%%B" "%%A_%%B"
您甚至不需要批处理文件。您可以直接从命令行使用以下命令:
for /f "delims=: tokens=1*" %A in ('dir /b /od ^| findstr /n "^"') do ren "%B" "%A_%B"