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

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

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

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

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

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

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

次に、次の方法でこれらをテストします。

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

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

もちろん、Iecho %today%%firstmonday%they は異なりますが、何らかの理由でテストは true と評価され、実行されます。

説明がわかりにくい場合は、お知らせください。もっとわかりやすく説明できるよう努力します。私はこの分野では初心者ですが、しばらくいじくり回していますが、論理的な欠陥がわかりません。

答え1

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

関連情報