中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 16:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 高手进-两个字符串比较,得到结果去掉字符 查看 1,035 回复 6
楼 主 高手进-两个字符串比较,得到结果去掉字符 发表于 2007-03-14 12:03 ·  中国 浙江 杭州 电信
新手上路
积分 11
发帖 5
注册 2007-03-11 01:46
19年会员
UID 81347
性别 男
状态 离线
比如 1.txt只有一个字符串是 d:\BAT\DOS
2.txt只有一个字符串是d:\BAT

怎样用批处理读出两个字符串,然后比较难得到结果是DOS

高手请帮忙。。。
批处理---我爱你!
2 发表于 2007-03-14 12:57 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
先用for读取数据,然后利用简单的set命令就行了。

set str1=!str1:%str2%=!
echo %str1%
3 发表于 2007-03-14 13:06 ·  中国 广东 广州 黄埔区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线

for /f %a in (dir /o:s 1.txt,2.txt) do (
for /f "tokens=*" %b in ("%%a") do (
call if defined stra (set strb=%%b) else (set stra=%%b)
)
)
call set str=%stra:%strb%=%

echo %str%

这样行吧
4 发表于 2007-03-15 01:53 ·  中国 浙江 杭州 电信
新手上路
积分 11
发帖 5
注册 2007-03-11 01:46
19年会员
UID 81347
性别 男
状态 离线
Originally posted by everest79 at 2007-3-14 12:06 AM:

for /f %a in (dir /o:s 1.txt,2.txt) do (
for /f "tokens=*" %b in ("%%a") do (
call if defined stra (set strb=%%b) else (set stra=%%b)
)
)
call set str=%stra:%strb%= ...

好像不行。
批处理---我爱你!
5 发表于 2007-03-15 02:15 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
  因为1.txt比2.txt中的字符串多出"\DOS",所以结果是"\DOS"。这个是不是你要的结果呢?

@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
SET/P A=<1.TXT
SET/P B=<2.TXT
SET A=!A:%B%=!
ECHO %A%
PAUSE
6 发表于 2007-03-15 02:17 ·  中国 浙江 杭州 电信
新手上路
积分 11
发帖 5
注册 2007-03-11 01:46
19年会员
UID 81347
性别 男
状态 离线
SET A=!A:%B%=! 是什么意思?怎么理解。

可以把\去掉吗?
批处理---我爱你!
7 发表于 2007-03-15 07:16 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by fpipe at 2007-3-14 13:17:
SET A=!A:%B%=! 是什么意思?怎么理解。

可以把\去掉吗?

  SET A=!A:B=C!将A变量中的B替换成C。

::去掉\可以截取:
echo %A:~1%
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
fpipe +1 2007-03-15 07:23
论坛跳转: