【问题标题】:batch script - how to compare current date with inside text file dates批处理脚本 - 如何将当前日期与内部文本文件日期进行比较
【发布时间】:2016-09-16 14:10:28
【问题描述】:

我有一个包含日期的文本文件,现在我想将该日期与当前日期进行比较。如果日期匹配,我需要执行一些操作,否则它将打印 else 语句。

我尝试了以下代码,但没有得到代码。 该变量包含所有值,但它采用最后一个值进行比较。

代码:

for /f  %%i in (' MyFile.txt') do set ren=%%i
echo %ren%
if  %ren% == %date% goto same

goto notsame

:same
echo Dates the same, do some code here
exit /b

:notsame
echo Dates NOT the same, do some code here
exit /b

文本文件:

06/04/2017
16/09/2016
04/05/2016

【问题讨论】:

  • 你是如何构建文本文件内容的?或者换一种问法:文本文件的日期格式是否总是符合echo %date%返回的格式?
  • 我根据我的要求从 sql 中收集了文本文件信息并假脱机到一个特定的目录...
  • 好的...所以这意味着从批处理命令 (echo %date%) 派生的日期格式可能与文本文件中使用的格式不同,对吗?这使一切变得更加复杂;但是,这里有很多关于以标准化格式检索系统或文件日期的问题;或者您也可以解析%date% 输出并以编程方式构建文本文件格式的日期值,但这取决于区域设置...

标签: batch-file batch-processing


【解决方案1】:

如果您PC上echo %date:~-10%的输出以与Myfile.txt内容相同的格式返回,则:

for /f %%i in (MyFile.txt) do if "%%i" equ "%date:~-10%" (call :same) else (call :notsame)
pause
exit /b
:same
echo Dates the same, do some code here
goto :eof
:notsame
echo Dates NOT the same, do some code here
goto :eof

【讨论】:

  • 很高兴您收到了适合您的答案。 这对网站、未来和以前的观众很有帮助,也可以激励提问者正确答案被标记出来
【解决方案2】:
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q39533625.txt"
findstr /x "%date%" "%filename1%">nul

IF ERRORLEVEL 1 (
 ECHO DATE %DATE% NOT found
) ELSE (
 ECHO DATE found:%date%
)

GOTO :EOF

您需要更改sourcedirfilename1 的设置以适应您的情况。

我使用了一个名为 q39533625.txt 的文件,其中包含您的数据用于我的测试。

findstr /x 在文件中查找当前日期字符串,如果找到则将errorlevel 设置为 0,否则设置为非零。 /x 表示“完全匹配”。 >nul 抑制 findstr 的屏幕报告。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多