不循环遍历所有文件

时间:2014-12-04 23:41:35

标签: windows batch-file batch-rename

Windows批处理脚本: 我在drectory中有三个文件。我试图遍历位于目录中的多个文件并重命名文件,但有些文件是如何不循环的。 我可以看到 var1 获取正确的文件名,但不是 sub1 。这反过来又重命名目录中的其他两个文件,输出错误。有人可以帮我这个。

@echo on & setlocal EnableDelayedExpansion 

set a=9
for /f "tokens=*" %%i in ('dir /b "C:\XX\YY\ZZ*"') do ( 
set var1=%%i
 SET sub1=%var1:~7,22%
 ECHO %sub1% 
  ren "%%i" "ABC!sub1!_!a!.dat" 
  set /a a+=1
) 

1 个答案:

答案 0 :(得分:1)

@echo on
setlocal EnableDelayedExpansion 
set a=10001 
for /f "tokens=*" %%i in ('dir /b "C:\TEST\PBM\PAR*"') do ( 
set var1=%%i
 SET sub1=!var1:~7,22!
 ECHO !sub1!
  ECHO ren "%%i" "ABC!sub1!_!a!.dat" 
  set /a a+=1
)

对于delayedexpansion,对循环内更改的变量值的任何引用都必须使用!var!语法。 %var%将访问解析时值。

注意:REN现在echo用于验证。