![]() |
中国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: 多谢版主。。 我现有一个实验环境: 服务器有一文件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 |