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

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

对比2个目录,如果目录下的子目录相同则退出批处理,如果不同则启动下一个程序。
比如有网络目录\\abc\a     本地目录 d:\a    2个目录a 下面若具备相同子目录则退出批处理,若不同则执行下一个程序并退出批处理

如果要求的是完全一致的话...
如果有 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
复制代码

TOP

     谢谢CrLf提供技术支持,不来这里我还不知道windows下还有robocopy这个高级复制工具,原来一直都用Fastcopy 。
    上面2段代码中,第一段代码是要求2个目录完全一样是吗。连时间戳也一样吗。
    而第二段则没有那么高的要求,只需比较2个TXT下面记录的目录子文件夹一致即可。
不知道我理解的是否正确

TOP

[attach]7892[/attach]
刚运行的时候提示 找不到文件  不知道哪里不对。
我在E F 2个盘符下面创建了2个test文件夹。对比这2个文件夹。

TOP

回复 4# jackhkyin


你改错地方了,a\ 替换成 e:\test,b\ 替换成 f:\test

TOP

找不到指定文件  的问题 解决了,但判断语句是否有误。我复制了2个同样的子目录到目标文件夹下面,2个目录下的子目录数目和名字完全一样也执行后面的程序。

TOP

我将 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

TOP

回复 7# jackhkyin


    我觉得是修改时间不一样导致判断“出错”,/w 确实是个好办法

TOP

返回列表