web-dev-qa-db-ja.com

バッチファイル:環境変数「if」文字列テスト

バッチファイルで、別のバッチファイルを呼び出して、いくつかの日付環境変数を設定しています。

データ変数は適切に設定されており、呼び出すことができます。

ただし、この場合、残りのバッチを条件付きで起動する(または終了/終了するまでスキップする)ために、これらの環境変数の2つを比較し、それらが同じであるかどうかを判断する必要があります。

ただし、2つの環境変数のテスト(比較)を実行するための条件を取得できないようです。

これらは、%today2%(今日の日付をMMDDYYとして設定)および%firstmonday%(月の最初の月曜日に計算され、MMYYDDとして設定)として定義されます。今日(2015年10月14日)実行すると、これらは101415と110215を返します。

次に、これらを次の方法でテストしようとしています。

if %today2%==%firstmonday% goto GO else END

ただし、テストは完全に無視されているようです。テストは常にGOに進みます。

もし私が echo %today%および%firstmonday%もちろん違いますが、どういうわけかテストはtrueと評価され、実行されます。

私が自分自身を明確に説明していない場合は、私に知らせてください。私はそれをより良くするように努めます。私はこれに関してはかなり初心者ですが、しばらくの間それをいじくり回していて、論理的な欠陥を理解することができないようです。

1
Keith

2つのバッチファイルを作成しました:b1.cmdおよびb2.cmd続く。最初、 b2.cmd説明されているように変数を設定します:

set today2=101415
set firstmonday=110215

次にb1.cmdこれは希望どおりに機能します:

@echo off
call b2.cmd
echo today=%today2%
echo firstmonday=%firstmonday%
if "%today2%"=="%firstmonday%" (
    goto go
) else (
    goto end
)
:go
echo at go
goto :EOF
:end
echo at end
1
BillP3rd