私のデスクトップには、「test」という名前のフォルダーがあります。このフォルダ内には、「file1.txt」と「file2.txt 」の 2 つのファイルがあります。
次の簡単なバッチ スクリプトを見てください。
@ECHO OFF
SET test="C:\Users\Tyler\Desktop\test"
ECHO %test%
FOR /R %test% %%F IN (*) DO (
ECHO %%F
)
ご想像のとおり、次のように出力されます。
"C:\Users\Tyler\Desktop\test"
C:\Users\Tyler\Desktop\test\file1.txt
C:\Users\Tyler\Desktop\test\file2.txt
次に、このバリエーションを見てみましょう。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET test="C:\Users\Tyler\Desktop\test"
ECHO !test!
FOR /R !test! %%F IN (*) DO (
ECHO %%F
)
ENDLOCAL
その出力に違いはないと思います。ただし、次のとおりです。
"C:\Users\Tyler\Desktop\test"
!test!
ラインで展開されているように見えますが、ラインECHO !test!
ではなく、. もちろん、これは有効なパスではないため、FOR /R ループは繰り返されません。FOR /R !test!
!test!
どうしてこれなの?私は何が欠けていますか?