Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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_Directory_Monitoring - Fatal编程技术网

Batch file 使用批处理文件监视文件夹

Batch 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

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

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

这是我的文件夹;D:\MonitoringFolder

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

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