0

好吧,我确定这是一个小众问题,但我希望有人能提供帮助。

我们正在处理的操作系统是 Windows NT 4.0。

我需要做的是创建一个批处理文件,该文件读取文件夹中的所有 Jounal.x(其中 x 是大于 0 且小于 32 的数字)文件。然后,我需要它以 EJ-REG-X.100 格式重命名每个文件。

我认为,我最大的问题是我对 DOS 的变量语法和正则表达式有点模糊。这是我到目前为止尝试过的代码

FOR /R %%g IN (C:\testbatch\transfer\Journal.*) DO (set regnum=%%g, ren Journal.* EJ-REG-%regnum%.100)

让我知道我是否可以提供更多信息。谢谢!

4

2 回答 2

3

尝试这个:

for /l %%a in (1,1,31) do (
    set "new=00%%a"
    setlocal enabledelayedexpansion
    set "new=!new:~-3!"
    ren "C:\testbatch\transfer\Journal.%%a" "EJ-REG-!new!.100"
    endlocal
)
于 2013-07-09T13:26:18.207 回答
0

/R 用于递归搜索,您不使用它,因此将其删除

循环中的 %%g 和 BTW regnum 包含完整的文件路径

所以开始删除路径和文件名,只保留使用 %%~xg 的扩展名,这样 regnum 将只包含文件扩展名,所以它将是:

FOR /R C:\testbatch\ %%g IN (Journal.*) DO (          
 set ext = %%~xg
 set ext = %ext:. =%
 ren %%g EJ-REG-%ext%.100)
于 2013-07-09T13:33:35.253 回答