![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 04:31 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]文件内容比对 |
| 可打印版本 3,053 / 21 |
| 第16楼 DXSX | 发表于 2010-09-10 11:56 |
| 中级用户 发帖 147 积分 247 | |
|
@echo off & setlocal ENABLEDELAYEDEXPANSION
set n=0 set m=0 set P=0 for /f "tokens=1,2* delims==" %%c in (a.txt) do ( set /A P=!P!+1 set Q=0 for /f "tokens=1,2* delims==" %%f in (b.txt) do ( set /A Q=!Q!+1 if %%c*==%%f* ( set /a m=!m!+1 if %%d%%e==%%g%%h ( if %%g*==* (echo %%f) else (echo %%f=%%g%%h) ) else (set /a n=!n!+1) ) ) ) echo. echo. echo A.TXT有%P%行内容,B.TXT有%Q%行内容 echo A.TXT的各行项目中B.TXT也有的共:%m%个,其中项目值不一致的:%n%个 :end ENDLOCAL 要求 A.TXT/B.TXT 中项目是唯一的,即一个文件中不能有多个相同名字的项目。 [ Last edited by DXSX on 2010-9-10 at 12:49 ] |
|
| 第17楼 coldface | 发表于 2010-09-11 01:56 |
| 初级用户 发帖 70 积分 71 | |
|
谢谢,上面有两处没看明白是什么意思。
1.if %%g*==* 这句*代表啥?代表以%%g为前缀么? 2.那几个m,n,p的变量的作用是什么? |
|
| 第18楼 DXSX | 发表于 2010-09-12 08:54 |
| 中级用户 发帖 147 积分 247 | |
Originally posted by coldface at 2010-9-11 01:56: m n p q 用来 计数, 文件行数 和 不同内容行数 %%f 表示 "=" 左边 内容, %%g %%h 表示 "=" 右边的内容。%%g*==* 表示 "=" 右边没有内容。 |
|
| 第19楼 coldface | 发表于 2010-09-12 13:08 |
| 初级用户 发帖 70 积分 71 | |
|
您给的程序好像运行起来有问题,
结果: A.TXT有0行内容,B.TXT有行内容 A.TXT的各行项目中B.TXT也有的共:0个,其中项目值不一致的:0个 [ Last edited by coldface on 2010-9-13 at 15:38 ] |
|
| 第20楼 DXSX | 发表于 2010-09-14 14:57 |
| 中级用户 发帖 147 积分 247 | |
Originally posted by coldface at 2010-9-12 13:08: 1、cmd文件 a.txt b.txt 放在一个文件夹 2、能否把 你的 a.txt b.txt 放出来。 具体可参考 http://hi.baidu.com/dxsx/blog/item/5ab15bedafca83d3b31cb1a2.html |
|
| 第21楼 coldface | 发表于 2010-09-14 23:04 |
| 初级用户 发帖 70 积分 71 | |
|
恩,放在同一文件下执行的。
a.txt和b.txt的文件跟楼2层贴出的一样。 感谢回复,我参考下那个帖子 修改下 |
|
| 第22楼 DXSX | 发表于 2010-09-15 08:41 |
| 中级用户 发帖 147 积分 247 | |
|
& setlocal ENABLEDELAYEDEXPANSION
必须有 |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |