标题: [系统相关] 批处理如何实现监控目录及其子目录的文件创建、删除和修改? [打印本页]
作者: xiaoqiang3243 时间: 2012-3-23 19:09 标题: 批处理如何实现监控目录及其子目录的文件创建、删除和修改?
1.实时监控目录中文件(包括子目录)
1.1文件是否增多?多了哪些文件以及具体路径是什么?(好像通过powershell调用system.io.filesystemwatcher能实现部分功能)
1.2如何判断该目录中新增的文件是否在另一目录中能找到?(这部分目前已有方法解决!)
关键是1.1没什么思路!望哪位batchman能给点提示,当然能提供源码更好!谢谢!
目录的初始文件列表lista.txt如下- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
复制代码
运行以下批处理:- @echo off
- setlocal enabledelayedexpansion
- dir /a-d/b/s . >listb.txt
- for /f %%i in (listb.txt) do (
- findstr /l "%%i" lista.txt
- if !errorlevel! equ 1 echo %%i >>listc.txt
- if !errorlevel! equ 1 echo %%i >>lista.txt
- )
复制代码
添加文件后目录文件列表为listb.txt如下- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\新建 文本文件.txt
复制代码
为什么结果listc.txt还是包含- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
- D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
复制代码
期待listc.txt的结果应该是复制代码
使用findstr的什么参数才能忽略那些空格斜杠等特殊字符???
作者: find 时间: 2012-3-23 21:12
生成一份文件列表C:\list.txt,1分钟之后判断现在的文件列表跟C:\list.txt有啥差别。
作者: find 时间: 2012-3-25 10:23
- findstr /l /v /x /g:a.txt b.txt
复制代码
作者: xiaoqiang3243 时间: 2012-3-25 14:38
本帖最后由 xiaoqiang3243 于 2012-3-25 14:40 编辑
- findstr /l /v /g:a.txt b.txt
复制代码
能打印不匹配的行 但是如果包含中文 就达不到预期的效果了
作者: find 时间: 2012-3-25 14:56
回复 4# xiaoqiang3243
我用的XP SP3英文版系统:
c:\Test>type a.txt
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
c:\Test>type b.txt
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
D:\hh\新建 文本文件.txt
c:\Test>findstr /l /v /x /g:a.txt b.txt
D:\hh\新建 文本文件.txt
作者: xiaoqiang3243 时间: 2012-3-25 17:41
即便我是xp3中文版, 不解啊!
作者: find 时间: 2012-3-25 18:31
回复 6# xiaoqiang3243
试试这个:复制代码
作者: powerbat 时间: 2012-3-25 21:16
为什么不用vbs呢?- If InStr(1, WScript.FullName, "wscript.exe", 1) then
- CreateObject("WScript.Shell").Run _
- "cscript.exe """ & WScript.ScriptFullName & chr(34)
- WScript.Quit()
- End If
-
- strComputer="."
- Set objWMIService = GetObject("winmgmts:" _
- & "{ImpersonationLevel=impersonate}!\\" _
- & strComputer & "\root\cimv2")
- Set Sink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
-
- objWMIService.ExecNotificationQueryAsync Sink, _
- "SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE " _
- & "Targetinstance ISA 'CIM_DataFile' AND " _
- & "TargetInstance.drive='d:' AND TargetInstance.path LIKE '\\hh\\%' "
-
- Do
- WScript.sleep 1000
- Loop
-
- Sub Sink_OnObjectReady(objWbemObject, objAsyncContext)
- WScript.Echo Now()
- WScript.Echo Replace(Mid(objWbemObject.Path_.Class,11), "Event", "") _
- & ": " & objWbemObject.Targetinstance.Name
- WScript.Echo String(79,"=")
- End Sub
复制代码
光转载不能解决问题是没用的。
作者: find 时间: 2012-3-25 21:46
回复 8# powerbat
你平均每个星期帮助别人解决几个问题?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |