0

forループで目覚めないのと同等のカット

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 / 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/24 / aa / bb / 09/24 F:\ xx \ 2012 \ 09 \ 24 \ ff

私がどこで間違っているのか誰かが指摘できますか?

よろしくお願いします

4

1 に答える 1

0

あなたのコードでは、2 つの主な変更を行います。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 
于 2012-10-01T20:32:52.407 に答える