中国DOS联盟论坛

中国DOS联盟

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

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

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





积分 172
发帖 77
注册 2006-11-23
状态 离线
『楼 主』:  求助,无论目标文件是新还是旧,只要和源文件不同就复制

求助,无论目标文件是新还是旧,只要和源文件不同就复制的BAT


比如A目录中的EXE文件去比较B目录中的EXE文件,如果B目录中的文件和A目录中的文件不同就复制,

2007-12-9 11:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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

简单效率较高的代码
@echo off
for /r a\ %%i in (*.exe) do (
    for /r a\ %%a in (%%~nxi) do (
       for /r b\ %%b in (%%~nxi) do (
       if not "%%~za"=="%%~zb"  echo %%a 不同于 %%b
       )
    )
)
pause
也能处理空格和系统属性文件的代码
@echo off
for /f "tokens=*" %%i in ('dir /s/b/a-d a\*.exe') do (
    for /f "tokens=*" %%a in ('dir /s/b/a-d "a\%%~nxi"') do (
       for /f "tokens=*" %%b in ('dir /s/b/a-d "b\%%~nxi"') do (
       if not "%%~za"=="%%~zb"  echo "%%a" 不同于 "%%b"
       )
    )
)
pause




第一高手    第二高手

2007-12-9 12:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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

哦补充一点除了用if not "%%~za"=="%%~zb"以外还可以用
if not "%%~ta"=="%%~tb"
预知详情请看for /?



第一高手    第二高手

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





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

这个问题似乎没这么复杂吧?
xcopy 的 /d  参数好像就有这个功能



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

DOS一根葱


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

是的但叫楼主如何去用xcopy还不如直接给他代码,扫盲难~,上面还没加copy参数,就怕回头楼主说判断出来了就是没有复制,总之什么都有可能,类似帖子回怕了~所以我3楼注明了预知详情请看for /?



第一高手    第二高手

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





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

xcopy 的 /d  参数只能检测源文件比目标文件新的时候才会复制,如果目标文件比源文件新是无法复制的,我的想法是因为病毒会感染目标文件,往往被改动过的文件比源文件要新,如果被改动,我就复制原始文件到目标,以使程序能正常运行

3楼的程序我用了一下,不过我是这样改过的
@echo off
for /r xw\ %%i in (*.exe) do (
    for /r xw\ %%a in (%%~nxi) do (
       for /r D:\鑫网通达信\ %%b in (%%~nxi) do (
       if not "%%~za"=="%%~zb"  copy/y xw\*.exe D:\鑫网通达信
       )
    )
)

产生的现象是连续复制,而且好象是三个文件一起复制了

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





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

最好是比较大小后如有不同复制,这样我可以把源文件改名成不带.EXE的文件,只有前面的名字,那样,源文件将不会被感染

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





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

其实只要判断某个文件就可以了

2007-12-9 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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

@echo off
for /r xw\ %%i in (*.exe) do (
    for /r xw\ %%a in (%%~nxi) do (
       for /r D:\鑫网通达信\ %%b in (%%~nxi) do (
       if not "%%~za"=="%%~zb"  copy/y xw\*.exe D:\鑫网通达信
       )
    )
)
要么是%%a要么是%%b否则用3个for就没意义了



第一高手    第二高手

2007-12-9 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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

简单点xxcopy论坛搜索有破解版的



第一高手    第二高手

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





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

你这个和我上面那个没有什么二样啊,我XW目录里有三个EXE文件,运行了这个代码后会产生连续不停的一直重复复制啊,而且我目标文件里的三个EXE现在没有变动过也是会复制的,

我想要源文件和目标文件不同时复制,不管目标文件新和旧,只要有变动就复制,可以一个一个文件的检测,这样吧,只要检测对比A 和B.EXE二个文件是否大小不同,不同就复制的命令,其中A文件没有后缀名

[ Last edited by cjfcjf222 on 2007-12-9 at 01:54 PM ]

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




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 12 楼』:  

问一下,一根葱
a\ %%i
为什么 a目录可以写在 定义变量的前面,我接触DOS不久,没见过这种写法,还请赐教
委屈一下你,就当扫盲吧!

2007-12-9 13:55
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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



  Quote:
Originally posted by huahua0919 at 2007-12-9 13:55:
问一下,一根葱
a\ %%i
为什么 a目录可以写在 定义变量的前面,我接触DOS不久,没见过这种写法,还请赐教
委屈一下你,就当扫盲吧!

for /?里有 for /r . %%a in (字符集) 扩展到当前目录包括子目录
for /?里有 for /r D:\ %%a in (字符集) 扩展到D:\目录包括子目录



第一高手    第二高手

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




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 14 楼』:  

刚看了,是有的!谢谢

2007-12-9 14:21
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


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



  Quote:
Originally posted by cjfcjf222 at 2007-12-9 13:52:
你这个和我上面那个没有什么二样啊,我XW目录里有三个EXE文件,运行了这个代码后会产生连续不停的一直重复复制啊,而且我目标文件里的三个EXE现在没 ...

3个for傻瓜模式扩展更多应用,单纯对比2个文件当然就2个for,另外你用*统配符只要xw文件夹下有一个和D:\鑫网通达信\不同就复制全部exe到D:\鑫网通达信了

其实第1个代码是多余的第2个更稳定,为什么写第1个呢有的人喜欢效率高



第一高手    第二高手

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


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



论坛跳转: