标题: [文件操作] 批处理如何对比2个目录,如果相同退出,如果不同则启动下一个程序? [打印本页]
作者: jackhkyin 时间: 2014-11-21 17:18 标题: 批处理如何对比2个目录,如果相同退出,如果不同则启动下一个程序?
对比2个目录,如果目录下的子目录相同则退出批处理,如果不同则启动下一个程序。
比如有网络目录\\abc\a 本地目录 d:\a 2个目录a 下面若具备相同子目录则退出批处理,若不同则执行下一个程序并退出批处理
作者: CrLf 时间: 2014-11-21 21:02
如果要求的是完全一致的话...
如果有 robocopy 可以这样:- @echo off
- robocopy /l /mir a b|findstr /rc:"目录: *[0-9]* *0" >nul&&exit /b
- 下一个程序.exe
复制代码
不然可以这样:- @echo off
- dir /s a\|findstr /vbrc:" ">a.txt
- dir /s b\|findstr /vbrc:" ">b.txt
- fc a.txt b.txt >nul&&exit /b
- 下一个程序.exe
复制代码
作者: jackhkyin 时间: 2014-11-22 16:50
谢谢CrLf提供技术支持,不来这里我还不知道windows下还有robocopy这个高级复制工具,原来一直都用Fastcopy 。
上面2段代码中,第一段代码是要求2个目录完全一样是吗。连时间戳也一样吗。
而第二段则没有那么高的要求,只需比较2个TXT下面记录的目录子文件夹一致即可。
不知道我理解的是否正确
作者: jackhkyin 时间: 2014-11-22 17:10
[attach]7892[/attach]
刚运行的时候提示 找不到文件 不知道哪里不对。
我在E F 2个盘符下面创建了2个test文件夹。对比这2个文件夹。
作者: CrLf 时间: 2014-11-22 17:22
回复 4# jackhkyin
你改错地方了,a\ 替换成 e:\test,b\ 替换成 f:\test
作者: jackhkyin 时间: 2014-11-22 18:46
找不到指定文件 的问题 解决了,但判断语句是否有误。我复制了2个同样的子目录到目标文件夹下面,2个目录下的子目录数目和名字完全一样也执行后面的程序。
作者: jackhkyin 时间: 2014-11-22 20:48
我将 dir 命令后面的参数改了,现在是 dir /w /o 这样写到TXT文本中的内容只显示文件夹并排序。就不会因为没有排序导致 因顺序不同而造成TXT文件不一样,从而程序误判。在我的win7 x64 和 win server r2 测试通过。
最终代码:
dir /w /o e:\test|findstr/vbrc:" ">a.txt
dir /w /o f:\test|findstr/vbrc:" ">b.txt
fc a.txt b.txt >nul&&exit /b
下一个程序.exe
作者: CrLf 时间: 2014-11-22 23:23
回复 7# jackhkyin
我觉得是修改时间不一样导致判断“出错”,/w 确实是个好办法
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |