使用批处理文件进行文件夹监视



我想监视我的文件夹是否添加了新文件。然后如果添加,我想执行一些文件。但我不想使用第三方应用程序。

我有一些想法,但我不知道该怎么做。

这是我的文件夹;D:\监控文件夹

因此,每小时批处理文件都会检查其中的文件并将它们写入 txt。

dir /b "D:MonitoringFolder" > old.txt

旧.txt 是 -->字符串 1、字符串 2、字符串 3

一小时后,批处理文件稍后会检查它并再次写入另一个 txt。

dir /b "D:MonitoringFolder" > new.txt

New.txt 是 -->字符串 1、字符串 2、字符串 3、字符串 5

然后它将比较新的.txt和旧的.txt。所以最近添加了字符串 5。它将提示一个窗口,并显示"字符串 5"已添加!或添加(删除)新文件。

我想这样做,如果有人能告诉我一种方法,我将不胜感激。

脚本 MONITOR.cmd 计划不时运行:

IF EXIST NEW.TXT DEL NEW.TXT
FOR /F "tokens=*" %%* IN ('DIR /S /B /ON "D:MonitoringFolder"') DO ECHO "%%*">>NEW.TXT
FOR /F "tokens=*" %%* IN (NEW.TXT) DO (FIND %%* OLD.TXT >NUL || START CMD /K INSERTED.cmd %%*)
FOR /F "tokens=*" %%* IN (OLD.TXT) DO (FIND %%* NEW.TXT >NUL || START CMD /K  DELETED.cmd %%*)
DEL OLD.TXT
REN NEW.TXT OLD.TXT

脚本 INSERTED.cmd 将创建新窗口,提示在新文件出现时执行操作:

ECHO Inserted new file %1
DIR %1
PAUSE & EXIT

脚本 DELETED.cmd 将创建新窗口,提示对旧文件消失执行操作:

ECHO Deleted file %1
PAUSE & EXIT

子文件夹也会受到监视。即使文件名中有空格和重音字符,它也对我有用。

由于您已经每小时转储一次输出,因此只需从提示符执行以下命令:

fc /u old.txt new.txt

它会告诉您(如果有)两个文件之间存在哪些差异。

也许您要编写批处理脚本(用于扫描文件夹和比较结果),并使用 cron (Linux) 或 Windows 任务调度程序等调度程序每小时安排它们以进行定期检查。这里有一些文档:http://support.microsoft.com/kb/308569,http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "SaveFile=Save.File"
IF NOT EXIST "%SaveFile%" GOTO:cont
DIR /b /a-d | FINDSTR /vg:"%SaveFile%">nul||EXIT /b
ECHO(execute some programs here
:cont
>"%SaveFile%" DIR /b /a-d

最新更新