Board logo

标题: 高手进-两个字符串比较,得到结果去掉字符 [打印本页]

作者: fpipe     时间: 2007-3-14 12:03    标题: 高手进-两个字符串比较,得到结果去掉字符
比如 1.txt只有一个字符串是 d:\BAT\DOS
2.txt只有一个字符串是d:\BAT

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

高手请帮忙。。。

作者: youxi01     时间: 2007-3-14 12:57
先用for读取数据,然后利用简单的set命令就行了。

set str1=!str1:%str2%=!
echo %str1%

作者: everest79     时间: 2007-3-14 13:06

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%

这样行吧

作者: fpipe     时间: 2007-3-15 01:53
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%= ...

好像不行。

作者: lxmxn     时间: 2007-3-15 02:15
  因为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

作者: fpipe     时间: 2007-3-15 02:17
SET A=!A:%B%=! 是什么意思?怎么理解。

可以把\去掉吗?

作者: lxmxn     时间: 2007-3-15 07:16
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%