[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理如何实现监控目录及其子目录的文件创建、删除和修改?

1.实时监控目录中文件(包括子目录)
1.1文件是否增多?多了哪些文件以及具体路径是什么?(好像通过powershell调用system.io.filesystemwatcher能实现部分功能)
1.2如何判断该目录中新增的文件是否在另一目录中能找到?(这部分目前已有方法解决!)
关键是1.1没什么思路!望哪位batchman能给点提示,当然能提供源码更好!谢谢!
目录的初始文件列表lista.txt如下
  1. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  2. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  3. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  4. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  5. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  6. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
复制代码
运行以下批处理:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. dir /a-d/b/s . >listb.txt
  4. for /f %%i in (listb.txt) do (
  5. findstr /l "%%i" lista.txt
  6. if !errorlevel! equ 1 echo %%i >>listc.txt
  7. if !errorlevel! equ 1 echo %%i >>lista.txt
  8. )
复制代码
添加文件后目录文件列表为listb.txt如下
  1. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  2. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  3. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  4. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  5. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  6. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  7. D:\hh\新建 文本文件.txt
复制代码
为什么结果listc.txt还是包含
  1. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.01.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  2. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.02.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  3. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.03.Chi_Eng.640X360-YYeTs人人影视制作.V2.rmvb
  4. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.04.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  5. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.05.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
  6. D:\hh\耶鲁大学开放课程:心理学导论.Open.Yale.course:Introduction.to.Psychology.06.Chi_Eng.640X360-YYeTs人人影视制作.rmvb
复制代码
期待listc.txt的结果应该是
  1. D:\hh\新建 文本文件.txt
复制代码
使用findstr的什么参数才能忽略那些空格斜杠等特殊字符???

生成一份文件列表C:\list.txt,1分钟之后判断现在的文件列表跟C:\list.txt有啥差别。

TOP

  1. findstr /l /v /x /g:a.txt b.txt
复制代码

TOP

本帖最后由 xiaoqiang3243 于 2012-3-25 14:40 编辑
  1. findstr /l /v /g:a.txt b.txt
复制代码
能打印不匹配的行 但是如果包含中文 就达不到预期的效果了

TOP

回复 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

TOP

即便我是xp3中文版, 不解啊!

TOP

回复 6# xiaoqiang3243


试试这个:
  1. grep -vxFf a.txt b.txt
复制代码

TOP

为什么不用vbs呢?
  1. If InStr(1, WScript.FullName, "wscript.exe", 1) then
  2.     CreateObject("WScript.Shell").Run _
  3.         "cscript.exe """ & WScript.ScriptFullName & chr(34)
  4.     WScript.Quit()
  5. End If
  6. strComputer="."
  7. Set objWMIService = GetObject("winmgmts:" _
  8.     & "{ImpersonationLevel=impersonate}!\\" _
  9.     & strComputer & "\root\cimv2")
  10. Set Sink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
  11. objWMIService.ExecNotificationQueryAsync Sink, _
  12.     "SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE " _
  13.     & "Targetinstance ISA 'CIM_DataFile' AND " _
  14.     & "TargetInstance.drive='d:' AND TargetInstance.path LIKE '\\hh\\%' "
  15. Do
  16.     WScript.sleep 1000
  17. Loop
  18. Sub Sink_OnObjectReady(objWbemObject, objAsyncContext)
  19.     WScript.Echo Now()
  20.     WScript.Echo Replace(Mid(objWbemObject.Path_.Class,11), "Event", "") _
  21.         & ": " & objWbemObject.Targetinstance.Name
  22.     WScript.Echo String(79,"=")
  23. End Sub
复制代码
光转载不能解决问题是没用的。

TOP

回复 8# powerbat


你平均每个星期帮助别人解决几个问题?

TOP

返回列表