Batch file 使用批处理文件监视文件夹
我想监控我的文件夹是否添加了新文件。然后,如果添加,我想执行一些文件。但我不想使用第三方应用程序 我有一些想法,但我不知道怎么做 这是我的文件夹;D:\MonitoringFolder 因此,每小时批处理文件都会检查其中的文件,并将其写入txtBatch file 使用批处理文件监视文件夹,batch-file,cmd,directory,monitoring,Batch File,Cmd,Directory,Monitoring,我想监控我的文件夹是否添加了新文件。然后,如果添加,我想执行一些文件。但我不想使用第三方应用程序 我有一些想法,但我不知道怎么做 这是我的文件夹;D:\MonitoringFolder 因此,每小时批处理文件都会检查其中的文件,并将其写入txt dir /b "D:\MonitoringFolder" > old.txt Old.txt是-->字符串1、字符串2、字符串3 一小时后,批处理文件将稍后检查并再次写入另一个txt dir /b "D:\MonitoringFolder" &g
dir /b "D:\MonitoringFolder" > old.txt
Old.txt是-->字符串1、字符串2、字符串3
一小时后,批处理文件将稍后检查并再次写入另一个txt
dir /b "D:\MonitoringFolder" > new.txt
New.txt是-->字符串1、字符串2、字符串3、字符串5
然后它将比较new.txt和old.txt。所以最近增加了字符串5。它将提示一个窗口并显示“string5”added!。或添加(删除)新文件
我想这样做,如果有人能告诉我一种方法,我将不胜感激。也许你要编写批处理脚本(用于扫描文件夹和比较结果),并使用诸如cron(Linux)或windows task scheduler之类的计划程序每小时进行一次电子定期检查。此处的一些文档:,由于您已经每小时转储一次输出,只需在提示符下执行以下命令:
fc /u old.txt new.txt
它将告诉您(如果有)这两个文件之间存在哪些差异。Script 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
Script INSERTED.cmd将创建新窗口,提示在出现新文件时执行操作:
ECHO Inserted new file %1
DIR %1
PAUSE & EXIT
Script DELETED.cmd将创建新窗口,提示在旧文件消失时执行操作:
ECHO Deleted file %1
PAUSE & EXIT
子文件夹也被监视。即使在文件名中有空格和重音字符,它也能为我工作。问题在于编写脚本,我可以处理任务,但比较文件和提示消息是一个问题,因为删除文件后我无法更新:/bat文件。除bat文件所在的位置外,我无法检查其他文件夹。不,这不是问题。顺便说一句,这可能会失败,如果您使用本地字符,例如
äááç
,但问题是监视一个文件夹,我刚才给出了一个示例。那些本地人对我来说不会有什么问题。而且它也没有检查子文件夹:/n这不是请求的。但我的代码是免费的-补丁欢迎:)如果你能补丁它,我会很感激,至少它可以检查子文件夹和指定的文件夹,而不是bat文件的位置
ECHO Deleted file %1
PAUSE & EXIT