对文件进行跟踪以查找更改,并在检测到更改时运行脚本

对文件进行跟踪以查找更改,并在检测到更改时运行脚本

我需要一种方法来实时跟踪文件的更新/修改,并在发生更新/修改时运行批处理脚本,我尝试过无济于事,这可能是因为它在记录输出到文件的程序中打开,但是

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

在 powershell 中会向我显示文件发生的任何更新,有什么方法可以让它在检测到更改时启动脚本或任何其他方法。我需要它以批处理或 powershell 脚本的形式出现。感谢大家的帮助。

答案1

代替尾巴为什么不定期执行这个第一个批处理文件:

REM 60 second looping check on TARGETFILE for a change of that file
:TOP
copy dir-out dir-out.old  
if errorlevel = 2 dir TARGETFILE > dir-out.old
dir TARGETFILE > dir-out  
fc dir-out dir-out.old 
if errorlevel = 1 goto:EOF
sleep 60s
goto:TOP
:EOF 
NAMEOFSECONDBATCHFILE.BAT

步骤1:复制 dir-out dir-out.old使用复制命令是 Windows 的一部分,用于复制目录列表的旧副本。如果没有文件目录输出那么你将得到错误级别值 2;稍后会详细介绍。

第 2 步:如果错误级别 = 2 dir TARGETFILE > dir-out.old

第一次运行此脚本时,不会有名为 **dir-out.old* 的文件,因此我们创建一个名为的文件来启动泵并防止脚本中断。 错误级别也是 Windows 的一部分。

步骤3:dir 目标文件 > dir-out使用目录命令是 Windows 的一部分,用于获取有关目标文件您要观看的文件;替换目标文件您希望跟踪的文件的名称

步骤4:fc dir-out dir-out.old使用足球俱乐部命令是 Windows 的一部分,用于将您刚刚创建的目录列表“dir-out”与该目录列表的先前版本“dir-out.old”进行比较。 如果它们相同,则变量 errorlevel 的值 = 0。 如果它们不相同,则变量 errorlevel 的值将更改为 1。

步骤5:如果错误级别 = 1 转到:EOF当检测到更改时,转到此批处理文件的末尾启动第二个脚本第二个沐浴文件

第 6 步: 睡眠依赖于免费的开源实用程序睡觉您可以从中获得http://gnuwin32.sourceforge.net/packages/coreutils.htmWindows 没有用于等待特定时间的实用程序,因此我们获取一个可靠的实用程序并将其添加到 c:\Windows\System32 或路径中的其他位置。这里的值 60 是任意的,您可以将其更改为您想要的任何值。

第 7 步:好的,您已经睡着了;是时候再次检查了。返回循环顶部。

步骤 8:EOF 是一个标记。只有当发现 TARGETFILE 有变化时才转到此处。

步骤 9:NAMEOFSECONDBATCHFILE.BAT 也是任意命名的,您可以将其更改为您想要的任何名称。这是批处理文件的名称,用于在检测到文件更改时执行您想要的任何操作。

相关内容