1

次の情報を含むテキストファイルがあるとします。

TIMESTARTED=Thu Nov 17 09:43:47 GMT 2011
START-OF-DATA
TEXT TEXT TEXT

TIMESTARTED 行はテキスト ファイルの特定の行にあり、特定のタスクを実行する前に、ここの日付が正しいことを確認する必要があります。私は基本的に、コンピューターの日付を見て、それが TIMESTARTED= の後の日付に対応するかどうかを確認したいのですが、そうであればbatscriptを実行し、そうでなければ別のbatスクリプトを実行する必要があります。

これが可能かどうか、または大規模なプログラミングが必要かどうかはわかりませんか? Windowsでスクリプトを作成するだけでこれを行うことができれば幸いです。誰かが私を正しい道に導くことができますか? (私はプログラマーではないので、できるだけ簡単に説明することをお勧めします)

4

2 に答える 2

1

これは、比較目的 (およびバッチでの配列の使用を促進するため) のためだけに、マップ文字列の代わりに配列を使用するようにわずかに変更された jeb のソリューションです。

setlocal EnableDelayedExpansion

for /F "tokens=2,3 delims= " %%A in ('findstr /B "TIMESTARTED" html_2.txt') do (
  set "monthName=%%A"
  set "day=%%B"
)
set "year=%date:~-4%"
for %%a in ("Jan=01" "Feb=02" "Mar=03" "Apr=04" "May=05" "Jun=06" "Jul=07" "Aug=08" "Sep=09" "Oct=10" "Nov=11" "Dec=12") do set %%~a
set "month=!%monthName%!"

set "timestarted=%day%.%month%.%year%"
if "%timestarted%" == "%DATE%" (
  echo The date is correct
) ELSE (
  echo wrong date %timestarted%
)
于 2012-06-30T01:20:57.787 に答える
0

最初に で行を選択し、findstrその日付を からの現在の日付と比較でき%date%ます。

setlocal EnableDelayedExpansion

for /F "tokens=2,3 delims= " %%A in ('findstr /B "TIMESTARTED" html_2.txt') do (
  set "monthName=%%A"
  set "day=%%B"
)
set "year=%date:~-4%"
SET map=Jan-01;Feb-02;Mar-03;Apr-04;May-05;Jun-06;Jul-07;Aug-08;Sep-09;Oct-10;Nov-11;Dec-12
SET "v=!%map:*%monthName%-=!"
set "month=!v:~0,2!"

set "timestarted=%day%.%month%.%year%"
if "%timestarted%" == "%DATE%" (
  echo The date is correct
) ELSE (
  echo wrong date %timestarted%
)
于 2012-06-27T09:38:04.643 に答える