for..do
ループの構文と%%
変数の使用を理解するための私の努力。for
1 つのループが使用されずDELAYEDEXPANSION
、別のループが表記法で使用される 2 つの特定の例/実装を経験しましDELAYEDEXPANSION
た。!
最初の for ループは、Windows XP などの古い OS と互換性があるように見えますが、2 番目の for ループの例は互換性がありません。
具体的には、1 番目の for ループの例は this answer (これに関連する) から取得され、2 番目の for ループの例は this answerから取得されます。
以下にコピーされた両方の例の変更されたコード:
1 番目の for ループ
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%"
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%"
set "Min=%dt:~10,2%"
set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%"
set "timestamp=%HH%%Min%%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
2 番目の for ループ
SETLOCAL ENABLEDELAYEDEXPANSION
set "path_of_folder=C:\folderA\folderB"
for /f "skip=5 tokens=1,2,4 delims= " %%a in (
'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." (
set "dt=%%a"
set vara=%%a
set varb=%%b
echo !vara!, !varb!
set day=!vara:~0,2!
echo !day!
)
遅延展開 (または表記) が古い OS (Windows XP など) と互換性がないという問題を読んで見ているので、1 番目のループのように 2 番目のループを記述する方法を!
確認したいと思います。つまり、 を使用しませんDELAYEDEXPANSION
。