通过循环批量重命名多个可变编号的文件

问题描述 投票:0回答:1

我有几个文件,假设编号为 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!
感叹号表示法的延迟扩展模式。没用。我没有想法,甚至不知道如何正确搜索它。

batch-file file-rename
1个回答
0
投票

@回声关闭 setlocal启用延迟扩展 设置数量=0 FOR %%I in (*.ht) DO Call :_deactivate "%%~nxI" %%~xI !num! 转到:eof 暂停

:_停用 任“%~1”“%~3%~2” 设 /A 数+=1

  1. Num 变量名不写%符号。
  2. 在标签上方使用 goto :eof 因为在 For 语句之后需要退出。
  3. 总共使用三个参数将扩展参数传递给标签。
  4. 要使用延迟扩展变量,请在顶部定义扩展变量并将 num 变量用 ! 分组。
  5. %~2 不是 num 变量的名称。
© www.soinside.com 2019 - 2024. All rights reserved.