Der IF-Befehl stimmt mit allen Zeichen, einschließlich der Anführungszeichen,
Thu
überein"Thu"
.So funktioniert eines der folgenden:
if %RDAY%==Thu ... if "%RDAY%=="Thu" ...
BEARBEITEN - Ich habe gerade realisiert, dass Sie dem Wert bei der Definition von RDAY Anführungszeichen hinzugefügt haben. Mein Vorschlag oben in gelb ist also nicht ganz richtig. Ich bevorzuge die Verwendung set "RDAY=%date:~0,3%"
, die dem Wert keine Anführungszeichen hinzufügt. Das ist aber eher eine Frage des Stils.
Vermutlich ist Ihre IF-Anweisung niemals wahr, da Ihr Computer ein anderes Format für den %DATE%
Wert verwendet, der nicht mit der Abkürzung für die Wochentage beginnt
Es gibt jedoch andere Probleme mit Ihrem Skript:
Nur Ihre Protokollzeile ist bedingt, das Donnerstag-Skript wird jeden Tag ausgeführt. Dies kann leicht behoben werden, indem Sie Ihrem IF-Block Klammern hinzufügen
if %DATE:~0,3%==Thu ( echo "Starting Weekly Matching" >> %LOGFILE% D:\New_Folder\SCRIPTTEST\Runthursday.bat )
Das Format des %DATE%
Werts ist abhängig vom Gebietsschema. Ihr Skript funktioniert wahrscheinlich nicht auf einem anderen Rechner. Sie können WMIC verwenden, um auf einfache Weise festzustellen, ob es sich um einen locale-agnostischen Weg vom Donnerstag handelt:
wmic path win32_localtime get dayofweek | findstr 4 >nul && ( echo "Starting Weekly Matching" >> %LOGFILE% D:\New_Folder\SCRIPTTEST\Runthursday.bat )
Ich habe jedoch eine Frage an Sie: Warum planen Sie einen täglichen Batch-Job, der nur am Donnerstag einen anderen Batch ausführt? Wenn Sie einen Batch-Job donnerstags ausführen möchten, verwenden Sie den Windows Task Scheduler, um genau dies zu tun. In Ihrem Batch-Skript müssen Sie nicht feststellen, ob heute Donnerstag ist. Lassen Sie den Scheduler die Arbeit erledigen.