Batch file 如何使用批处理脚本监视日志文件的文件大小更改?
我试图找到一种方法,通过一个由任务调度器启动的脚本来监视日志文件 因此,理想情况下,我希望脚本检查文件大小,将其与上次脚本运行时的文件大小进行比较,如果大小已更改,则向事件查看器写入一个条目并更新oldfilesize.txt文件。这将每天重复 到目前为止,我得出的结论是:Batch file 如何使用批处理脚本监视日志文件的文件大小更改?,batch-file,cmd,monitor,Batch File,Cmd,Monitor,我试图找到一种方法,通过一个由任务调度器启动的脚本来监视日志文件 因此,理想情况下,我希望脚本检查文件大小,将其与上次脚本运行时的文件大小进行比较,如果大小已更改,则向事件查看器写入一个条目并更新oldfilesize.txt文件。这将每天重复 到目前为止,我得出的结论是: dir logfile.txt > C:\filesize.txt //this should give me the filesize and save the result into filesize.txt CO
dir logfile.txt > C:\filesize.txt
//this should give me the filesize and save the result into filesize.txt
COMP oldfilesize filesize.txt
//This should compare the old file created with the new.
在那些命令之后,我就迷路了。如何获取COMP
命令的结果,并确定是否应将新结果保存到oldfilesize.txt,并在事件查看器中写入事件
我猜我会使用
eventcreate
来触发事件创建,但我不确定我会怎么做。我不会以dir
的输出为基础,因为comp
会在输出发生任何变化(大小、日期、可用磁盘空间等)时报告差异。试着这样做:
@echo off
setlocal EnableDelayedExpansion
set datastore=C:\filesize.txt
set logfile=C:\logfile.txt
if exist %datastore% (
for /f %%f in ('%datastore%') do set old_size=%%~f
) else (
set old_size=0
)
for %%f in (%logfile%) do set new_size=%%~zf
if %new_size% neq %old_size% (
echo %new_size% > %datastore%
rem do other stuff
)
endlocal
我不会以
dir
的输出为基础,因为comp
会在输出发生任何变化(大小、日期、可用磁盘空间等)时报告差异。试着这样做:
@echo off
setlocal EnableDelayedExpansion
set datastore=C:\filesize.txt
set logfile=C:\logfile.txt
if exist %datastore% (
for /f %%f in ('%datastore%') do set old_size=%%~f
) else (
set old_size=0
)
for %%f in (%logfile%) do set new_size=%%~zf
if %new_size% neq %old_size% (
echo %new_size% > %datastore%
rem do other stuff
)
endlocal
谢谢你,安斯加!这正是我需要的动力。谢谢安斯加!这正是我需要的推动力。