1
SET CLIENTS=blah1:blah2

for %%x in (%CLIENTS::= %) do (
SET client=%%x
echo %client%;
if "%1"==%client% goto end
)
:end

最初に blah1 と %1 を比較し、次に blah2 と %2 を比較することを期待します。ただし、%client% には blah2 のみが割り当てられます。この問題を解決する方法はありますか?

4

1 に答える 1

2

FORループ内で変数を展開するには、遅延展開を有効にして、解析時に展開するのではなく、実行時に変数を強制的に展開する必要があります。詳細HELP SETについては、こちらをお読みください。

そして、コードを次のように変更してみてください

@echo off
setlocal enabledelayedexpansion
SET CLIENTS=blah1:blah2
set CLIENTS=%CLIENTS::= %
for %%x in (%CLIENTS%) do (
  SET client=%%x
  echo !client!;
  if "%1"=="!client!" goto end
  )
:end

変数は、!client!ではなく、わずかに異なる構文で参照されることに注意してください%client%遅延環境変数展開では、別の文字 (感嘆符) を使用して、実行時に環境変数を展開できます。

于 2012-11-02T20:47:43.267 に答える