【发布时间】:2017-05-18 09:13:00
【问题描述】:
我想创建一个批处理文件,它将读取一个 .log 文件,然后从中提取错误并附加到一个 .txt 文件中。 但我不希望批处理每次都重写 .txt,所以现在我希望比较这两个文件的最后修改时间戳,然后只附加最新的更新。 以下是批处理文件
@echo off
color 3
cls
@FOR %%A IN ("%ProgramFiles(x86)%\Apache Software Foundation\Apache2.2\logs\error.log") DO @(ECHO=%%~tA& set timestamp=%%~tA)
echo %timestamp%
@FOR %%A IN ("D:\error.txt") DO @(ECHO=%%~tA& set timestamp2=%%~tA)
echo %timestamp2%
if %timestamp% gtr %timestamp2% (
set DirToSearch="C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs"
set LineToRead="error"
pushd %DirToSearch%
for /r %%f in (error.log) do (
For /F "tokens=*" %%l in ('Findstr /L /I %LineToRead% "%%f"') do (
if %%l equ " " (
echo File:"%%f" is Not OK >> D:\FileStatus.txt
) else (
echo Line: %%l>>D:\error.txt
)
)
)
Goto :End
:End
popd
)
pause
exit
现在我无法比较时间戳 如果有人为实现这一目标做出贡献,那将是很大的帮助。
【问题讨论】:
-
比较时间戳的最佳方法是与 unixtimestamps 进行比较。也许你看这里:unix.stackexchange.com/questions/84381/…
标签: windows batch-file command-line