找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27844|回复: 7

[文件操作] 批处理如何对比2个目录,如果相同退出,如果不同则启动下一个程序?

[复制链接]
发表于 2014-11-21 17:18:03 | 显示全部楼层 |阅读模式
对比2个目录,如果目录下的子目录相同则退出批处理,如果不同则启动下一个程序。
比如有网络目录\\abc\a     本地目录 d:\a    2个目录a 下面若具备相同子目录则退出批处理,若不同则执行下一个程序并退出批处理
发表于 2014-11-21 21:02:25 | 显示全部楼层
如果要求的是完全一致的话...
如果有 robocopy 可以这样:
  1. @echo off
  2. robocopy /l /mir a b|findstr /rc:"目录: *[0-9]* *0" >nul&&exit /b
  3. 下一个程序.exe
复制代码
不然可以这样:
  1. @echo off
  2. dir /s a\|findstr /vbrc:" ">a.txt
  3. dir /s b\|findstr /vbrc:" ">b.txt
  4. fc a.txt b.txt >nul&&exit /b
  5. 下一个程序.exe
复制代码
 楼主| 发表于 2014-11-22 16:50:07 | 显示全部楼层
     谢谢CrLf提供技术支持,不来这里我还不知道windows下还有robocopy这个高级复制工具,原来一直都用Fastcopy 。
    上面2段代码中,第一段代码是要求2个目录完全一样是吗。连时间戳也一样吗。
    而第二段则没有那么高的要求,只需比较2个TXT下面记录的目录子文件夹一致即可。
不知道我理解的是否正确
 楼主| 发表于 2014-11-22 17:10:30 | 显示全部楼层

刚运行的时候提示 找不到文件  不知道哪里不对。
我在E F 2个盘符下面创建了2个test文件夹。对比这2个文件夹。
发表于 2014-11-22 17:22:45 | 显示全部楼层
回复 4# jackhkyin


你改错地方了,a\ 替换成 e:\test,b\ 替换成 f:\test
 楼主| 发表于 2014-11-22 18:46:52 | 显示全部楼层
找不到指定文件  的问题 解决了,但判断语句是否有误。我复制了2个同样的子目录到目标文件夹下面,2个目录下的子目录数目和名字完全一样也执行后面的程序。
 楼主| 发表于 2014-11-22 20:48:16 | 显示全部楼层
我将 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
发表于 2014-11-22 23:23:00 | 显示全部楼层
回复 7# jackhkyin


    我觉得是修改时间不一样导致判断“出错”,/w 确实是个好办法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 12:58 , Processed in 0.028264 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表