0

多くのプロパティのファイル名をそれぞれ変数fileNameに入れて、コマンドプロンプトウィンドウにエコーアウトしたいと思います。ただし、循環される最後のプロパティファイル名のみが、プロパティファイルの数だけ出力されます。この問題の簡単な修正はありますか?... DO echo %%-nxGでも同じことができることはわかっていますが、将来使用するためにファイル名を%%〜nxGに保存したいと思います。

FOR %%G IN (C:\ExecutionSDKTest_10.2.2\*.properties) DO (
set fileName=%%~nxG
echo %fileName%
 )
4

1 に答える 1

2

遅延拡張を使用する必要があります。

setlocal enabledelayedexpansion
FOR %%G IN (C:\ExecutionSDKTest_10.2.2\*.properties) DO (
set fileName=%%~nxG
echo !fileName! 
 )

cmdコマンドが解析されると、の環境変数が展開されます。この場合、これには括弧で囲まれたブロック全体が含まれます。したがって%fileName%、ループが実行される前に値がなかったため、空の文字列に置き換えられます。遅延拡張は、変数評価!の代わりにを使用し、コマンドが実行%される直前に評価されるように変数評価を変更します。

help set必要な理由と時期についての詳細があります。一般に、ループ内で変数を変更して使用する場合は常に、遅延拡張を使用する必要がありますが、他にもいくつかの利点があります。

于 2012-06-26T19:26:37.973 に答える