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

[文本处理] 批处理怎么样可以按机号提取内容到新的文本?

[文本处理] 批处理怎么样可以按机号提取内容到新的文本?

现在有1.txt格式如下
[A001]
2524524522        a123456
5858222257        a123456
[A002]
24542542345        a123456
25234523458        a123456
[A003]
2345345345        a123456
2345345453        a123456

怎么样可以提取A002号机的帐号到新的文本帐号.txt格式如下
24542542345----a123456
25234523458----a123456

怎么样可以用批处理实现

本帖最后由 wankoilz 于 2015-10-7 23:31 编辑

练习awk:
  1. #&cls&@gawk -f %0 1.txt >账号.txt&exit
  2. /\[A002\]/,/\[A003\]/{a[++i]=$1"----"$2}
  3. END {for(j=2;j<i;j++) print a[j]}
复制代码

TOP

回复 2# wankoilz


    可以用自带命令吗?

TOP

简单用bat做了一个,通用性可能不太好:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. if %%a==[A002] set f=1
  4. if %%a==[A003] set f=0
  5. if !f!==1 if not %%a==[A002] echo %%a
  6. )
  7. pause
复制代码

TOP

回复 4# wankoilz


    你这个是显示A002号机一直到最后的内容了,我只要A002一台机的帐号 不要A003的内容

TOP

我这里测试没问题,用的是你发出来的内容!

TOP

纯批:
  1. @echo off
  2. (for /f "tokens=1*" %%a in (a.txt) do (
  3. if %%b#==# (
  4. set "[A002]="
  5. set %%a=true
  6. ) else (
  7. if defined [A002] echo %%a----%%b
  8. )
  9. ))>b.txt
  10. pause
复制代码

TOP

本帖最后由 wankoilz 于 2015-10-8 00:09 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. set "s=%%a"
  4. if "!s:~0,6!"=="[A002]" set f=1
  5. if "!s:~0,6!"=="[A003]" set f=0
  6. if !f!==1 if not "!s:~0,6!"=="[A002]" echo %%a
  7. )
  8. pause
复制代码
楼上的代码思路真好!

TOP

inifile比较容易处理

TOP

返回列表