ログファイルで特定の文字列をチェックし、一致する日付スタンプに基づいて特定のタスクを実行する次のコードがあります。
以下のコードは、日付と時刻の形式が YY-MM-DD hh:mm の Windows 7 マシンでうまく機能しますが、Windows Server 2008 で日付と時刻の形式が YY-MM- のまったく同じバッチ ファイルを実行すると、 DD hh:mm 機能しません - 日時形式である可能性があります...バッチ ファイルで使用されている日時形式が YY-DD-MM 日付形式で機能するかどうかを確認できますか?
また、ログ ファイルの日時形式がログ ファイル自体の日時形式と異なる場合はどうなりますか? コードは引き続き機能しますか?
for /f "tokens=2" %%a in ('findstr /i /c:"DATABASE IS OK" log.txt') do set "success=%%a"
for %%a in (log.txt) do set "filedate=%%~ta"
if "%filedate:~0,10%"=="%success%" (
call another.bat
) else (
>>otherlogfile.log echo(%date% %time% DATABASE UNSUCCESSFUL
)
ありがとうございました
更新 1:
C:\Utilities\Filter>for %a in (logfile.txt) do set "filedate=%~ta"
C:\Utilities\Filter>set "filedate=2013-07-31 21:31"
C:\Utilities\Filter>REM If it still does not work remove REM from next
line so we can see what is being compared
C:\Utilities\Filter>ECHO.filedate=!filedate:~0,10!] success=2013/07/
31]
filedate=2013-07-31] success=2013/07/31]
C:\Utilities\Filter>pause
Press any key to continue . . .
ご覧のとおり、形式が正しくないため、比較対象の日付が一致することはありません。
filedate=2013-07-31] success=2013/07/31]
何を指示してるんですか?
更新 2:
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('findstr /i /c:"DATABASE IS OK" logfile.txt') do set "success=%%a"
set "%success:^/=-%"
echo %success%
pause
for %%a in (logfile.txt) do set "filedate=%%~ta"
REM If it still does not work remove REM from next line so we can see what is being compared
ECHO.filedate=!filedate:~0,10!] success=%success%]
pause
if "!filedate:~0,10!"=="%success%" (
call another.bat
) else (
>>readlogFail.txt echo(%date% %time% DATABASE UNSUCCESSFUL
)