如何用批处理显示txt中拥有某一串字符的一整行文本?

例如txt中有(每个字符串间都是TAB间隔,而且每个字符串不等长):
ab bd ca dd 1t 23 e8
9a 9d 34 d8 0x d2 东东
t3 d7 f2 h7 c8 dd2
......

比如我要查找c8,希望能回显“t3 d7 f2 h7 c8 dd2”一整行。

@echo off
type "1.txt"| find /i "c8"
pause追问

假设要显示
“第一列是t3 第二列是d7 第三列是f2 第四列是h7 第五列是c8 第六列是dd2“
怎么做?

追答

@echo off
for /f "delims=" %%a in ('type "1.txt" ^| find /i "c8"') do (
echo.
call :sub "%%a"
)
pause

goto :eof
:sub
for %%x in (%~1) do (
echo %%x
)
goto :eof

追问

不好意思,如果您能再帮忙一下,并且能运行正确的话,我会加分值的。
假设不止一行有c8,怎么编写统计拥有c8的行数,并显示出来呢?

追答

@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in ('type "1.txt" ^| find /i "c8"') do (
set /a n=n+1
echo.
call :sub "%%a"
)

echo 找到!n!行
pause

goto :eof
:sub
for %%x in (%~1) do (
echo %%x
)
goto :eof

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-21
@echo off
for /f %%i in ('type 1.txt^| find /i c8') do (
echo 第一列是%%i 第二列是%%j 第三列是%%k 第四列是%%l 第五列是%%m 第六列是%%n
)追问

不好意思,如果您能再帮忙一下,并且能运行正确的话,我会加分值的。
假设不止一行有c8,怎么编写统计拥有c8的行数,并显示出来呢?

追答

@echo off
setlocal enabledelayedexpansion
for /f %%i in ('type 1.txt^| find /i c8') do (
echo 第一列是%%i 第二列是%%j 第三列是%%k 第四列是%%l 第五列是%%m 第六列是%%n
set /a n+=1
)
echo 含有指定字符函数共!n!行。

追问

同样感谢你,不过你的代码不够严谨,没有tokens=1,2,3,4,5,6的话,%%j %%k %%l %%m%%n是显示不出来的。

第2个回答  2011-08-21
@echo off
set /p list=
for /f "tokens=*" %%i in ('type 1.txt^| find /i "%list%"') do echo %%i
Pause追问

你的我显示不出来。。。。

相似回答