Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用批处理脚本监视日志文件的文件大小更改?_Batch File_Cmd_Monitor - Fatal编程技术网

Batch file 如何使用批处理脚本监视日志文件的文件大小更改?

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

我试图找到一种方法,通过一个由任务调度器启动的脚本来监视日志文件

因此,理想情况下,我希望脚本检查文件大小,将其与上次脚本运行时的文件大小进行比较,如果大小已更改,则向事件查看器写入一个条目并更新oldfilesize.txt文件。这将每天重复

到目前为止,我得出的结论是:

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

谢谢你,安斯加!这正是我需要的动力。谢谢安斯加!这正是我需要的推动力。