批处理命令 显示所要查找字符串所在行和下面一行内容并输出到一个文件中。急在线等

假设查找内容为“问问”,查找文件为“a.txt”,输出文件为“b.txt”!
在线等,各位大牛们。 麻烦了。

@Echo Off&Setlocal Enabledelayedexpansion
For /f "tokens=1* delims=:" %%i in ('Type a.txt^|Findstr /n "问问"') do (
Set n=&Set /a n=%%i+1
Echo %%j>>b.txt
For /f "tokens=1* delims=:" %%a in ('Type a.txt^|Findstr /n "."') do (If %%a==!n! Echo %%b>>b.txt)
)
Pause

可以处理a.txt中包含多个 搜索结果.例如 搜索结果包含多个"问问".

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-16
@echo off
cd /d %~dp0
rem 设置文件
set f=abc.txt

rem 设置搜索内容
set t=问问

rem 设置输出文件
set n=NewFile.txt

for /f "tokens=1,2 delims=:" %%a in ('findstr /n "%t%" "%f%"') do (
set h=%%a
pause
echo %%b>"%n%"
goto next
)
:next
for /f "skip=%h% delims=" %%c in ('type "%f%"') do (
echo %%c>>"%n%"
pause
exit
)

追问

你这个不行,就执行了一遍。取出了一次。我一个文件里好多指定字符串

追答

呃!你又没说明,这个你参考罐头梨子的代码吧

第2个回答  2013-10-16
@echo off
setlocal enabledelayedexpansion
for /f "delims=: tokens=1,2" %%i in ('type a.txt ^| findstr/n "问问"') do (
set /a a=%%i+1
echo %%j>>b.txt
)
for /f "delims=: tokens=1,2" %%a in ('type a.txt ^| findstr/n .*') do (
if %%a==!a! echo %%b>>b.txt
)追问

追答

@echo off
setlocal enabledelayedexpansion
for /f "eol=* delims=: tokens=1,2*" %%i in ('type a.txt ^| findstr/n "统计信息"') do (
echo %%i>>text.txt
)
set a=0
for /f "tokens=*" %%a in (text.txt) do (
set /a a=%%a+1
for /f "eol=* delims=: tokens=1,2*" %%q in ('type a.txt ^| findstr/n "统计信息"') do (
if %%q==%%a (echo %%w>>b.txt)
if %%q==!a! (echo %%w>>b.txt)
)
del text.txt

打印 ”统计信息“ 那一行和它下面一行。支持N行(没测试,你测试一下)

本回答被提问者采纳
第3个回答  2013-10-16
grep -A 1 "问问" a.txt >> b.txt追问

这是Shell好吗?我要的批处理

相似回答