中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-03 02:12
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 对比文件
可打印版本  1,406 / 14
第1楼 ufw119 发表于 2006-12-26 10:07
初级用户 发帖 20 积分 52
对比文件
用DOS。。怎么对比文件的大小或者修改日期不同呢?
第2楼 namejm 发表于 2006-12-26 10:24
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  纯DOS还是windows下的CMD?
第3楼 ufw119 发表于 2006-12-26 10:25
初级用户 发帖 20 积分 52
现在要找纯的DOS难呀。

我现在说的是在WINDWOS下的CMD。
第4楼 namejm 发表于 2006-12-26 10:30
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  XP下的CMD可以用 for 语句中的 %%~zi 和 %%~ti 来分别获取文件的字节数和最后修改日期,用 dir /a-d 也可以提取到,dir 里的 /t 参数甚至可以提取到文件的创建时间、上次访问时间和上次修改时间。
第5楼 ufw119 发表于 2006-12-26 11:13
初级用户 发帖 20 积分 52
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文件改变,就执行游戏更新,否则就直接运行游戏。。

求完整的代码。。
第6楼 namejm 发表于 2006-12-26 11:21
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  因为没条件,联网状态下的批处理我从来没写过,不敢信口开河,还是请有经验的来写一下吧。
第7楼 ufw119 发表于 2006-12-27 02:21
初级用户 发帖 20 积分 52
问题没有解决..........顶起。。。。

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



CMD能实现吗?VBS的又如何写呢。
第8楼 lxmxn 发表于 2006-12-27 02:53
版主 发帖 4,938 积分 11,386


  没测试,有问题跟贴讨论。
第9楼 ufw119 发表于 2006-12-27 03:59
初级用户 发帖 20 积分 52
@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盘下生成文件。。
第10楼 lxmxn 发表于 2006-12-27 04:06
版主 发帖 4,938 积分 11,386

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

  一个文件都没有生成么?
第11楼 zh159 发表于 2006-12-27 05:23
金牌会员 发帖 1,467 积分 3,687
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 ]
第12楼 zjindong 发表于 2007-01-14 03:33
初级用户 发帖 26 积分 64
测试无效。。
我很想知道这个答案,请高手继续
第13楼 tianzizhi 发表于 2007-01-14 07:04
高级用户 发帖 214 积分 623
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
第14楼 lxmxn 发表于 2007-01-14 07:59
版主 发帖 4,938 积分 11,386

  呵呵,用/f参数习惯了,没改过来,多谢指出我的疏忽。
第15楼 zjindong 发表于 2007-01-15 14:05
初级用户 发帖 26 积分 64
请问为什么要打开此目录 cd /d c:\windows\system32

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

[ Last edited by zjindong on 2007-1-15 at 02:09 PM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023