中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,无论目标文件是新还是旧,只要和源文件不同就复制
« [1] [2] »
作者:
标题: 求助,无论目标文件是新还是旧,只要和源文件不同就复制 上一主题 | 下一主题
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 16 楼』:  

@echo off
for /f "tokens=*" %%a in ('dir /s/b/a-d "xw\a b c.exe"') do (
    for /f "tokens=*" %%b in ('dir /s/b/a-d "D:\鑫网通达信\a b c.exe"') do (
    if not "%%~za"=="%%~zb" if not "%%~ta"=="%%~tb"  echo "%%a" 不同于 "%%b"
    )
)
pause

[ Last edited by fastslz on 2007-12-9 at 04:53 PM ]



第一高手    第二高手

2007-12-9 14:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 17 楼』:  

一个简单问题居然搞得这么复杂?

楼主的问题越看越糊涂了
在一说判断a和b文件夹的exe文件是否相同.
在11楼又说a文件没有后缀.

我想楼主大概是这个意识
  a文件夹里面的所有都文件是备份文件,如果发现b文件夹里面的文件和a文件夹里面的
  文件不同就用a文件夹里的文件覆盖b文件夹里的文件.
  如果是这样的话,2楼的代码应该可以解决问题啊?难道你的文件名含有空格?
  那么2楼的第二个代码应该也可以啊.!

to 2 楼
   第一个代码中的第二个for是否有点多余?直接 if %%~zi 不可以么?

to 16 楼
   是否发帖太急了,多写了一个if 且最后一个 if 好像漏掉了一个字母  z



致精致简!
2007-12-9 16:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 18 楼』:  



  Quote:
Originally posted by 26933062 at 2007-12-9 16:44:
to 16 楼
   是否发帖太急了,多写了一个if 且最后一个 if 好像漏掉了一个字母  z

是的,其实漏掉是t 改过来了
IE7很麻烦经常询问允许剪贴板访问,老是出现误操作郁闷~
2楼呢为什么用3个for归功于楼主说“无论目标文件是新还是旧”,模糊方式第1个for是遍历到一个文件名。傻瓜方式直接遍历整个分区里同文件名之间的对比。



第一高手    第二高手

2007-12-9 17:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cjfcjf222
初级用户





积分 172
发帖 77
注册 2006-11-23
状态 离线
『第 19 楼』:  

'dir /b为没有标题信息摘要,好象不能比较二个文件有差异吧,我的意思是二个文件只要大小不同,就把源文件覆盖到目标文件,
理论上就是把一个程序的EXE文件备份一个,为防止病毒感染,备份的文件应该是没有后缀的,由于XCOPY只检测源文件比目标文件新时才复制,还有XXCOPY也是这样的,上面的那段代码也没有起到作用

2007-12-9 22:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 20 楼』:  

@goto start_1
终于把问题说清楚了。
a文件夹于b文件夹的文件是同名的,但a文件夹中的是没有后缀的。
循环a文件夹中的所有文件,于b文件夹中的同名的exe文件对比,
大小不一样的就复制a文件夹中的文件到b文件夹中,后缀为exe、覆盖原b文件夹中的exe文件
:start_1 ::
@echo off
for /f "delims=" %%a in ('dir/b/a-d a\*.*') do (
   for /f "delims=" %%i in ('dir/b/s/a-d "b\%%~na.exe"') do (
     if not "%%~za"=="%%~zi" echo copy/y "%%a" "b\%%~na.exe"
))
pause
[ Last edited by 26933062 on 2007-12-9 at 11:16 PM ]



致精致简!
2007-12-9 23:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by cjfcjf222 at 2007-12-9 22:25:
'dir /b为没有标题信息摘要,好象不能比较二个文件有差异吧,我的意思是二个文件只要大小不同,就把源文件覆盖到目标文件,
理论上就是把一个程序的E ...

这帖子还真累,楼主半天还没明白用什么去判断比较二个文件有差异的,for /?然后按5次Enter
for /f "delims=" %%a in ('dir/b/a-d a\*.exe') do echo 文件%%a  大小%%~za字节
for /f "delims=" %%a in ('dir/b/a-d a\*.exe') do echo 文件%%a  修改时间%%~ta



第一高手    第二高手

2007-12-9 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: