我有几个文件,假设编号为 40,扩展名为
.htm
、.html
、.mhtml
等(不相同 - 这很重要)。这是一个简短的例子:
alpha.htm
beta.htm
gamma.html
delta.htm
我想使用一种模式将它们全部重命名,如下所示:
alpha.htm → 0.htm
beta.htm → 1.htm
gamma.html → 2.htm
delta.htm → 3.htm
不幸的是,使用上面的说明创建普通 ren 文件是不合适的,因为所有
.htm
似乎都焊接到其相关内容文件夹,并且 Windows 阻止任何尝试以这种方式重命名它们。虽然,它突然对循环起作用了。
所以我想使用循环,并且该函数采用两个参数 - 第一个参数用于名称,第二个参数 - 用于用作计数器的数字:
SET %num%=0
FOR %%I in (*.*ht*) DO Call :_deactivate "%%~nxI %num%"
:_deactivate
Ren "%~1" "%~2%~x1"
Set /A "%~2+=1"
似乎解释器并不真正知道如何读取这个
"%~2%~x1"
,它实际上是第二个参数(%~2
)和第一个参数的文件名扩展名(%~x1
)的组合,我不知道我真的不知道是否有可能将这些变量组合起来,以及这是如何完成的。
SET /A %%\~2+=1
抱怨缺少操作数,所以我认为这里并没有真正看到两个操作数。
我四处寻找以找到将自定义变量与文件的 Batch 内部通配符结合起来的正确形式; 我尝试将
%num%
重写为 %%z
,以使用带有 !num!
感叹号表示法的延迟扩展模式。没用。我没有想法,甚至不知道如何正确搜索它。
@回声关闭 setlocal启用延迟扩展 设置数量=0 FOR %%I in (*.ht) DO Call :_deactivate "%%~nxI" %%~xI !num! 转到:eof 暂停
:_停用 任“%~1”“%~3%~2” 设 /A 数+=1