中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 对比文件 上一主题 | 下一主题
ufw119
初级用户





积分 52
发帖 20
注册 2006-12-25
状态 离线
『楼 主』:  对比文件

用DOS。。怎么对比文件的大小或者修改日期不同呢?

2006-12-26 10:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  纯DOS还是windows下的CMD?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-26 10:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ufw119
初级用户





积分 52
发帖 20
注册 2006-12-25
状态 离线
『第 3 楼』:  

现在要找纯的DOS难呀。

我现在说的是在WINDWOS下的CMD。

2006-12-26 10:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  XP下的CMD可以用 for 语句中的 %%~zi 和 %%~ti 来分别获取文件的字节数和最后修改日期,用 dir /a-d 也可以提取到,dir 里的 /t 参数甚至可以提取到文件的创建时间、上次访问时间和上次修改时间。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-26 10:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ufw119
初级用户





积分 52
发帖 20
注册 2006-12-25
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by namejm at 2006-12-25 09:30 PM:
  XP下的CMD可以用 for 语句中的 %%~zi 和 %%~ti 来分别获取文件的字节数和最后修改日期,用 dir /a-d 也可以提取到,dir 里的 /t 参数甚至可以提取到文� ...

多谢版主。。
我现有一个实验环境:
服务器有一文件VER.txt..工作站某地目录下有一文件VER.TXT.如果服务器上的VER文件改变,就执行游戏更新,否则就直接运行游戏。。

求完整的代码。。

2006-12-26 11:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  

  因为没条件,联网状态下的批处理我从来没写过,不敢信口开河,还是请有经验的来写一下吧。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-26 11:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ufw119
初级用户





积分 52
发帖 20
注册 2006-12-25
状态 离线
『第 7 楼』:  

问题没有解决..........顶起。。。。

怎么实现。。对比服务器(\\a254\d$\mir2\ver.txt)和工作站的(d:\netgame\mir2\ver.txt)两个文件,,如果修改日期或大小不同,就执行一段命令,如果相同就执行另外一条命令。。。。。



CMD能实现吗?VBS的又如何写呢。

2006-12-27 02:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  


@echo off
set k=d:\netgame\mir2\ver.txt
net use z: \\a254\d$\mir2\
for /f %%i in (z:\ver.txt) do set s_t=%%~ti&set s_s=%%~zi
for /f %%i in (%k%) do set c_t=%%~ti&set c_s=%%~zi
if %s_t%==%c_t% if %s_s%==%c_s% (
rem 都相同时的命令……
rem command……
)
rem 有一个不相同要执行的命令……
pause
  没测试,有问题跟贴讨论。


2006-12-27 02:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ufw119
初级用户





积分 52
发帖 20
注册 2006-12-25
状态 离线
『第 9 楼』:  

@echo off
cd\
cd windows
cd system32
set k=e:\sc47\ver.txt
net use z: \\a254\d\sc47
for /f %%i in (z:\ver.txt) do set s_t=%%~ti&set s_s=%%~zi
for /f %%i in (%k%) do set c_t=%%~ti&set c_s=%%~zi
if %s_t%==%c_t% if %s_s%==%c_s% (
echo 都相同时的命令…… >c:\1.txt
)
echo 有一个不相同要执行的命令…… >c:\2.txt
pause



执行后,可以映射网络硬盘,但没有在C盘下生成文件。。

2006-12-27 03:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  


  cd\,cd windows,cd system32 可以用一个来完成cd /d c:\windows\system32。

  一个文件都没有生成么?


2006-12-27 04:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 11 楼』:  

else 嵌套问题
只要“if %s_t%==%c_t% ”不等,后面的都不执行

改一下:
if %s_t%==%c_t% if %s_s%==%c_s% echo 都相同时的命令…… >c:\1.txt&&goto :end
echo 有一个不相同要执行的命令…… >c:\2.txt
:end
pause

[ Last edited by zh159 on 2006-12-26 at 04:25 PM ]

2006-12-27 05:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zjindong
初级用户





积分 64
发帖 26
注册 2006-1-10
状态 离线
『第 12 楼』:  

测试无效。。
我很想知道这个答案,请高手继续

2007-1-14 03:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 13 楼』:  

lxmxn犯了一个低级的错误,
for /f %%i in (z:\ver.txt) do set s_t=%%~ti&set s_s=%%~zi
for /f %%i in (%k%) do set c_t=%%~ti&set c_s=%%~zi
这两句根本得不到变量值,后面的就不要谈了.
应该把/f这个参数去掉才行,加上它就处理文本内容,我们要处理文件本身属性,不是文本内容.
还有处理时间时还要把变量加上"",因为它中间有空格.

@echo off
cd /d c:\windows\system32
set k=e:\sc47\ver.txt
net use z: \\a254\d\sc47
for  %%i in (z:\ver.txt) do set s_t=%%~ti & set s_s=%%~zi
for  %%j in (%k%) do set c_t=%%~tj & set c_s=%%~zj
if "%s_t%"=="%c_t%" if %s_s%==%c_s% (echo 都相同时的命令.......>c:\1.txt & goto end)
echo 有一个不相同要执行的命令…… >c:\2.txt
:end
pause



QQ:419503077
2007-1-14 07:04
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  


  呵呵,用/f参数习惯了,没改过来,多谢指出我的疏忽。


2007-1-14 07:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zjindong
初级用户





积分 64
发帖 26
注册 2006-1-10
状态 离线
『第 15 楼』:  

请问为什么要打开此目录 cd /d c:\windows\system32

测试还是无效.请高手测试一下!

[ Last edited by zjindong on 2007-1-15 at 02:09 PM ]

2007-1-15 14:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: