0

ループ内でバッチファイルを使用して複数のディレクトリが存在するかどうかを確認しようとしていますが、惨めに失敗します。ロジックは少し奇妙に思えるかもしれませんが、簡単にするためにスクリプトから省略した他の処理には、そのようなパラメーターが必要です。

@ECHO OFF
SET output_path=C:\Users\test\Desktop\

SET scenario[0].param1=15
SET scenario[0].param2=100
SET scenario[0].param3=3600
SET scenario[1].param1=10
SET scenario[1].param2=1000
SET scenario[1].param3=3600

SET "i=0"

:CaseLoop
IF DEFINED scenario[%i%].param1 IF DEFINED scenario[%i%].param2 IF DEFINED scenario[%i%].param3 (

SET cur.param1=
SET cur.param2=
SET cur.param3=
FOR /f "delims==. tokens=1-3" %%j in ('SET scenario[%i%]') do (
  SET cur.%%k=%%l
)

REM Check if output directory exists
CALL ECHO "%%output_path%%\%%cur.param1%%-%%cur.param2%%-%%cur.param3%%\"
IF EXIST "%%output_path%%\%%cur.param1%%-%%cur.param2%%-%%cur.param3%%\" (
  CALL ECHO SUCCESS
) ELSE (
  CALL ECHO NO
)
SET /a "i+=1"
GOTO :CaseLoop
)

ディレクトリは存在しますが、何らかの理由でelseステートメントに入ります。変数展開かと思ったのですが、ECHOがエコーする前の行 C:\Users\test\Desktop\15-100-3600\C:\Users\test\Desktop\10-1000-3600\それぞれ

4

1 に答える 1