問題は単純ですが、解決策はバッチで醜いです。たとえば、上記の回答の1つで、次の出力が生成されました。
C:\>echo %date:~6,4%_%date:~3,2%_%date:~0,2%
/08/_ 1_Th
明らかに、それは常に機能するとは限りません。幸い、Rob Van der Woudeは、このようなソリューションを準備して収集しました。そのコードは私のために次の出力を生成します:
DateParsed=20121108
私はRobのコードをコピーし、使いやすさのためにここで彼のソースを参照しました。
:: One of the ugliest scripts required for such a seemingly simple thing is getting dates parsed
:: http://www.robvanderwoude.com/datetimentparse.php
SET Today=%Date: =0%
SET Year=%Today:~-4%
:: Include 1 extra character, which will be either a leading zero or a trailing separator
SET Month=%Today:~-10,3%
:: Remove separator
SET Month=%Month:-=%
SET Month=%Month:/=%
:: Clear leading zeroes
SET /A Month = 100%Month% %% 100
:: And add one again, if necessary
SET /A Month = 100 + %Month%
SET Month=%Month:~-2%
SET Day=%Today:~-7,2%
:: Remove separator
SET Day=%Day:-=%
SET Day=%Day:/=%
:: Clear leading zeroes, as there may be 2 leading zeroes
SET /A Day = 100%Day% %% 100
:: And add one again, if necessary
SET /A Day = 100 + %Day%
SET Day=%Day:~-2%
SET DateParsed=%year%%month%%day%
echo DateParsed=%DateParsed%