与其迭代所有可能的数字,不如只处理存在的文件更有效。作为第一步,我暂时附加.ren
到文件中,这样我就不必担心按降序处理。
此解决方案假定所有以 PW 或 T 开头的现有 .XLS 文件都将被重命名并遵循正确的命名约定。它还假定要重命名的文件位于当前目录中。
@echo off
setlocal enableDelayedExpansion
for %%C in (P T W) do ren %%C*.xls *.*.ren
ren ?.xls.ren ?0000.*
for %%F in (*.xls.ren) do (
set "num=%%F"
set /a "num=1!num:~1,4! - 9999"
set "num=000!num!"
ren %%F ?!num:~-4!.xls
)
这是一个更直接但效率可能较低的版本,可以安全地忽略以 PT 或 W 开头的不符合命名约定的 .XLS 文件。在这里,我按降序对文件进行排序,这样我只需要重命名每个文件一次。
@echo off
setlocal enableDelayedExpansion
for /f "delims=" %%F in (
'dir /b /a-d /o-n *.xls^|findstr /rix [PTW][0-9][0-9][0-9][0-9].xls'
) do (
set "num=%%F"
set /a "num=1!num:~1,4! - 9999"
set "num=000!num!"
ren %%F ?!num:~-4!.xls
)
for %%C in (P T W) do ren %%C.xls ?0001.*
我正在利用 REN 如何处理通配符的一些鲜为人知的特性。请参阅Windows RENAME 命令如何解释通配符?了解更多信息。