好吧,我确定这是一个小问题,但我希望有人可以提供帮助。
我们正在处理的操作系统是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)
如果我能提供更多信息,请告诉我。谢谢!
答案 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)