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 的解决方案,稍微修改为使用数组而不是映射字符串,仅用于比较目的(并促进在 Batch 中使用数组):

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 回答