Windows批处理文件名操作

时间:2013-07-09 13:12:08

标签: regex windows for-loop batch-file cmd

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

我们正在处理的操作系统是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)

如果我能提供更多信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:0)

/ R用于récursive搜索,您不使用它 所以删除它

循环中的

%% 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)
相关问题