[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样提取文本中的字符串并使之按一定要求排列?

本帖最后由 ljfriend 于 2011-8-21 13:24 编辑

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

比如我要查找c8,希望能回显其所在的一整行。
就上文而言,c8有两行。我知道普通的回显只要用type就行,但是我想达到以下效果:
回显时显示

列1:ab
列2:bd
列3:ca
列4:dd
列5:1t
列6:c8
列1:t3
列2:d7
列3:f2
列4:h7
列5:c8
列6:dd2

即有c8的行按照上面的方式排列回显。


以下是我的代码:
  1. @echo off
  2. cls
  3. set tab=
  4. set /p findstr=输入内容:
  5. for /f "tokens=1 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列1:%%i
  6. for /f "tokens=2 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列2:%%i
  7. for /f "tokens=3 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列3:%%i
  8. for /f "tokens=4 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列4:%%i
  9. for /f "tokens=5 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列5:%%i
  10. for /f "tokens=6 delims=%tab%" %%i in ('findstr "%findstr%" temp.txt') do echo 列6:%%i
  11. pause>nul
复制代码
但是显示出来的是
列1:ab
列1:t3
列2:bd
列2:d7
列3:ca
列3:f2
......
不是我想要的,希望高手帮帮我,本人是初学者。

找c8一行的:
findstr /i "c8" a.txt
横排变竖排的:
for %%a  in (a.txt) do echo %%a
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 ljfriend 于 2011-8-21 13:23 编辑

哎,没人回答自己解决了。。。。。
  1. for /f "delims=%tab% tokens=1,2,3,4,5,6" %%i in ('type temp.txt^| find /i "%findstr%"') do (
  2. echo 列1:%%i  &echo 列2:%%j &echo 列3:%%k &echo 列4:%%l &echo 列5:%%m &echo 列6:%%n &echo. &pause>nul
  3. set /a count+=1)
  4. echo 共有%count%行符合要求。
复制代码

TOP

返回列表