削减相当于dos不工作的循环

时间:2012-10-01 11:37:41

标签: for-loop substring batch-file

削减相当于不在for循环中的dos

weekly_date.txt的内容

18092012                                                                        
19092012                                                                        
20092012                                                                        
21092012                                                                        
22092012                                                                        
23092012                                                                        
24092012                                                                        

我正在运行批处理脚本&面对下面部分

中的变量值替换问题
for /f %%I in (weekly_date.txt) do ( 

echo %%I
set yy=%%I:~4,4%
set mm=%%I:~2,2%
set dd=%%I:~0,2%

echo %yy%

SET bp=/xx/yy/%mm%/%dd%
SET br=/aa/bb/%mm%/%dd%
SET TP=F:\xx\%yy%\%mm%\%dd%\yy

echo %bp%
echo %br%
echo %TP% )

done

=============================================== =========================
然后在

SET bp=/xx/yy/%/%mm%/%dd%
SET br=/aa/bb/%/%mm%/%dd%
SET TP=F:\xx\%yy%\%mm%\%dd%\ff 

在运行批处理脚本

时会以下面的方式进行字幕翻译
SET bp=/xx/yy/%i:~2,2/%i:~0,2  
SET br=/aa/bb/%i:~2,2/%i:~0,2  
SET TP=F:\xx\%i:~4,4\%i:~2,2\%i:~0,2\ff   

实际上输出必须是

/ XX / YY / 9月18日 / AA / BB / 9月18日 F:\ XX \ 2012 \ 09 \ 18个\ FF

/ XX / YY / 9月19日 / AA / BB / 9月19日 F:\ XX \ 2012 \ 09 \ 19个\ FF

.... ...

/ XX / YY / 9月24日 / AA / BB / 9月24日 F:\ XX \ 2012 \ 09 \ 24个\ FF

任何人都可以指出我出错的地方吗?

提前致谢 SREE

1 个答案:

答案 0 :(得分:0)

对于你的代码,我会做两个主要的改变:1)将for循环的输入设置为另一个变量(称为var)进行操作2)启用延迟扩展,允许使用每个for循环迭代操作变量。如果需要对我的代码进行任何其他更改,请告诉我=]

我的代码如下:

@echo off
setLocal EnableDelayedExpansion

for /f %%I in (weekly_date.txt) do ( 
set var=%%I
set yy=!var:~4,4!
set mm=!var:~2,2!
set dd=!var:~0,2!

set bp=/xx/yy/!mm!/!dd!
set br=/aa/bb/!mm!/!dd!
set TP=F:\xx\!yy!\!mm!\!dd!\ff

echo !bp! !br! !TP!
)

endlocal

使用您提供的相同weekly_dates.txt输入,此代码的输出为:

/xx/yy/09/18 /aa/bb/09/18 F:\xx\2012\09\18\ff 
/xx/yy/09/19 /aa/bb/09/19 F:\xx\2012\09\19\ff 
/xx/yy/09/20 /aa/bb/09/20 F:\xx\2012\09\20\ff 
/xx/yy/09/21 /aa/bb/09/21 F:\xx\2012\09\21\ff 
/xx/yy/09/22 /aa/bb/09/22 F:\xx\2012\09\22\ff 
/xx/yy/09/23 /aa/bb/09/23 F:\xx\2012\09\23\ff 
/xx/yy/09/24 /aa/bb/09/24 F:\xx\2012\09\24\ff