检测日志文件中的更改并在检测到更改时启动脚本

检测日志文件中的更改并在检测到更改时启动脚本

我正在尝试编写一些代码(在批处理/powershell中),当在日志文件中检测到更改时,它将启动我制作的批处理脚本(在一些优秀人士的帮助下),我尝试了一些解决方案,例如一个,但它无法正确检测文件何时被修改,我认为这是因为它在记录它的程序中处于打开状态。我发现这个

获取内容文件名 -Tail 0 -Wait

powershell 命令可以正确显示添加到文件中的任何新更改,但我不确定是否可以使用它来启动我的其他脚本。如果有帮助的话,这是那个脚本

@echo off
copy foobar.log file.log /Y > NUL
echo Loading...>currentsong.txt
timeout /t 5 /nobreak > NUL
setlocal enabledelayedexpansion
for /f tokens^=2^ delims^=^" %%a in (file.log) do (
  set "lastLine=%%~na"
  )
echo %lastLine%>currentsong.txt
endlocal

非常感谢您的帮助。谢谢!

答案1

电源外壳:

gc -Path .\newlog.txt -tail 0 -wait | ForEach{
    # Extract file BaseName
    $_.split('"')[1].split('\')[-1].split('.')[0] 
    # Any other code you want to execute when log is updated.
}

即使文件已关闭,此操作也会循环等待文件更新。您必须编写一个突破测试或使用Ctrl+C

相关内容