中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 07:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]文件内容比对 查看 3,062 回复 21
16 发表于 2010-09-10 11:56 ·  中国 辽宁 葫芦岛 联通
中级用户
★★
积分 247
发帖 147
注册 2009-04-09 20:52
17年会员
UID 142531
性别 男
状态 离线
@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 发表于 2010-09-11 01:56 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
16年会员
UID 170757
性别 男
状态 离线
谢谢,上面有两处没看明白是什么意思。
1.if %%g*==* 这句*代表啥?代表以%%g为前缀么?
2.那几个m,n,p的变量的作用是什么?
18 发表于 2010-09-12 08:54 ·  中国 辽宁 葫芦岛 联通
中级用户
★★
积分 247
发帖 147
注册 2009-04-09 20:52
17年会员
UID 142531
性别 男
状态 离线
Originally posted by coldface at 2010-9-11 01:56:
谢谢,上面有两处没看明白是什么意思。
1.if %%g*==* 这句*代表啥?代表以%%g为前缀么?
2.那几个m,n,p的变量的作用是什么?


m n p q 用来 计数, 文件行数 和 不同内容行数

%%f 表示 "=" 左边 内容, %%g %%h 表示 "=" 右边的内容。%%g*==* 表示 "=" 右边没有内容。
19 发表于 2010-09-12 13:08 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
16年会员
UID 170757
性别 男
状态 离线
您给的程序好像运行起来有问题,

结果:
A.TXT有0行内容,B.TXT有行内容
A.TXT的各行项目中B.TXT也有的共:0个,其中项目值不一致的:0个

[ Last edited by coldface on 2010-9-13 at 15:38 ]
20 发表于 2010-09-14 14:57 ·  中国 辽宁 葫芦岛 联通
中级用户
★★
积分 247
发帖 147
注册 2009-04-09 20:52
17年会员
UID 142531
性别 男
状态 离线
Originally posted by coldface at 2010-9-12 13:08:
您给的程序好像运行起来有问题,

结果:
A.TXT有0行内容,B.TXT有行内容
A.TXT的各行项目中B.TXT也有的共:0个,其中项目值不一致的:0个

[ Last edited by coldface on 2010-9-13 at 15:38 ]


1、cmd文件 a.txt b.txt 放在一个文件夹
2、能否把 你的 a.txt b.txt 放出来。

具体可参考
http://hi.baidu.com/dxsx/blog/item/5ab15bedafca83d3b31cb1a2.html
21 发表于 2010-09-14 23:04 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
16年会员
UID 170757
性别 男
状态 离线
恩,放在同一文件下执行的。
a.txt和b.txt的文件跟楼2层贴出的一样。
感谢回复,我参考下那个帖子 修改下
22 发表于 2010-09-15 08:41 ·  中国 辽宁 葫芦岛 联通
中级用户
★★
积分 247
发帖 147
注册 2009-04-09 20:52
17年会员
UID 142531
性别 男
状态 离线
& setlocal ENABLEDELAYEDEXPANSION
必须有
论坛跳转: