标题: 对比文件
[打印本页]
作者: ufw119
时间: 2006-12-26 10:07
标题: 对比文件
用DOS。。怎么对比文件的大小或者修改日期不同呢?
作者: namejm
时间: 2006-12-26 10:24
纯DOS还是windows下的CMD?
作者: ufw119
时间: 2006-12-26 10:25
现在要找纯的DOS难呀。
我现在说的是在WINDWOS下的CMD。
作者: namejm
时间: 2006-12-26 10:30
XP下的CMD可以用 for 语句中的 %%~zi 和 %%~ti 来分别获取文件的字节数和最后修改日期,用 dir /a-d 也可以提取到,dir 里的 /t 参数甚至可以提取到文件的创建时间、上次访问时间和上次修改时间。
作者: ufw119
时间: 2006-12-26 11:13
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文件改变,就执行游戏更新,否则就直接运行游戏。。
求完整的代码。。
作者: namejm
时间: 2006-12-26 11:21
因为没条件,联网状态下的批处理我从来没写过,不敢信口开河,还是请有经验的来写一下吧。
作者: ufw119
时间: 2006-12-27 02:21
问题没有解决..........顶起。。。。
怎么实现。。对比服务器(\\a254\d$\mir2\ver.txt)和工作站的(d:\netgame\mir2\ver.txt)两个文件,,如果修改日期或大小不同,就执行一段命令,如果相同就执行另外一条命令。。。。。
CMD能实现吗?VBS的又如何写呢。
作者: lxmxn
时间: 2006-12-27 02:53
@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
没测试,有问题跟贴讨论。
作者: ufw119
时间: 2006-12-27 03:59
@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盘下生成文件。。
作者: lxmxn
时间: 2006-12-27 04:06
cd\,cd windows,cd system32 可以用一个来完成cd /d c:\windows\system32。
一个文件都没有生成么?
作者: zh159
时间: 2006-12-27 05:23
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 ]
作者: zjindong
时间: 2007-1-14 03:33
测试无效。。
我很想知道这个答案,请高手继续
作者: tianzizhi
时间: 2007-1-14 07:04
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
作者: lxmxn
时间: 2007-1-14 07:59
呵呵,用/f参数习惯了,没改过来,多谢指出我的疏忽。
作者: zjindong
时间: 2007-1-15 14:05
请问为什么要打开此目录 cd /d c:\windows\system32
测试还是无效.请高手测试一下!
[
Last edited by zjindong on 2007-1-15 at 02:09 PM ]