10分ごとに.txtファイルを更新するアプリケーションがあります。 09:00(9am)以降にファイルが更新された最初の日に、そのファイルの電子メールを送信したいと思います。更新されたファイル(3行目のSETコマンドが指す)は、0900から0910の間の任意のタイムスタンプを持つことができます。WindowsバッチIF!時間! EQU "09"がTRUEを返さない
私が提案しているのは、毎日0857で15分実行するバッチファイルを実行する時間が09になるまでファイルの日付スタンプをチェックすると、電子メールを送信して終了します。
IF !hour! EQU "09" (GOTO :rundailymail) ELSE (Timeout /T 6).
(私はそれを実行したときにエコーするに従って)、時間は「09」であるにもかかわらず:機能をテストするには、以下のコードエキスで
は、私はシンプルで問題文を比較しましたよ、compareはfalseを返します。あなたは私が苦労してると、この作業を取得するために多くのものを試してみました(と私はのいくつかを残してきた
0900の間と0959.のタイムスタンプを持つファイルを持っている必要があり、それをテストする
診断がそこにある)。どんな助けや助言も大いに感謝します。
@echo on
Setlocal EnableDelayedExpansion
SET filename="D:\Temp Files\test.txt"
IF NOT EXIST %filename% GOTO log
rem echo %filedatetime%
for /l %%x in (1, 1, 20) do (
FOR %%f IN (%filename%) DO SET filedatetime=%%~tf
echo !filedatetime!
SET hour= "!filedatetime:~11,-6!"
Echo !hour!
IF !hour! EQU "09" (GOTO :rundailymail) ELSE (Timeout /T 60)
)
:failedtofindfile
ECHO "Failed to find the right file timestamp"
goto end
:rundailymail
ECHO "send the daily email"
goto end
:log
ECHO "FILE MISSING"
goto end
:end
'set hour ='の後に余分なスペースを入れます。つまり、スペースは「時間」の始まりになります。 – librik
'!hour!' - 'if"!hour!の前後にも引用符が必要です!"equ" 09 "' – SomethingDark
は 'set hour = value'またはより良い' set "hour = value"を使用します。スペースはありません。 '='の前のスペースは変数名に入り、その後のスペースは値になります –