与えられたバッチ ファイルを編集していますが、次のコード行が何をするのかわかりません。
set allKeys=%allKeys% !currentKey!
ありがとう!
与えられたバッチ ファイルを編集していますが、次のコード行が何をするのかわかりません。
set allKeys=%allKeys% !currentKey!
ありがとう!
遅延拡張とは何かを説明するには、 と入力してSET /?
ください。
currentkey
スペースの後に変数のランタイム値を解析時の値に追加し、提供された -allkeys
のランタイム値が呼び出されると結果を割り当てます。が呼び出されない場合、変数の値ではなく文字列を追加します。allkeys
delayedexpansion
delayedexpansion
!currentKey!
currentkey
コンテキスト情報がなければ、それ以上のことを推測しています...
試すコードの例を次に示します。
allkeys は for in do ループの外で設定されます。
for in do ループ内で変更されますが、%allkeys% を使用するため、変更は累積されません。
@echo off
setlocal enabledelayedexpansion
set allkeys=one
for %%a in (two three four five six) do (
set currentkey=%%a
set allKeys=%allKeys% !currentKey!
echo allkeys is now "!allkeys!"
)
echo allkeys is now "%allkeys%" outside the loop
pause
この行
set allKeys=%allKeys% !currentKey!
をこれに変更して実行し、違いを確認してください。
set allKeys=!allKeys! !currentKey!