找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22664|回复: 5

[文本处理] [已解決]BAT如何抓取指定字串以下的行数

[复制链接]
发表于 2013-12-3 10:04:53 | 显示全部楼层 |阅读模式
本帖最后由 hp051247767 于 2013-12-4 08:51 编辑

Companly20131115.sql 內容如下
DROP TABLE IF EXISTS `axt_event_log`;

CREATE TABLE `axt_event_log` (
`EVENT` varchar(2048) NOT NULL,
`USERIP` varchar(100) NOT NULL,
`USERID` varchar(100) NOT NULL,
`UPDATETIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID`;
CREATE TABLE  `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID` (
  `SID` VARCHAR(100) NOT NULL  ,
`EMP_NO_V` VARCHAR(100) NULL
,
`C_NAME_V` VARCHAR(100) NULL
,
`SEX_V` VARCHAR(100) NULL
,
`ID_NO_V` VARCHAR(100) NULL
,
`BIRTHDAY_V` VARCHAR(100) NULL
,
`TEL_NO_V` VARCHAR(100) NULL
,
`POST_NO_V` VARCHAR(100) NULL
,
`ADDRESS_V` VARCHAR(100) NULL
,
`ADDRESS1_V` VARCHAR(100) NULL
,
`VETERAN_V` VARCHAR(100) NULL
,
`MARRIAGE_V` VARCHAR(100) NULL
,
`ECP_V` VARCHAR(100) NULL
,
`ECP_TEL_V` VARCHAR(100) NULL
,
`HEIGHT_V` VARCHAR(100) NULL
,
`WEIGHT_V` VARCHAR(100) NULL
,
`BLOOD_V` VARCHAR(100) NULL
,
`NATIONALITY_V` VARCHAR(100) NULL
,
`DEP_NO_V` VARCHAR(100) NULL
,
`JOB_V` VARCHAR(100) NULL
,
`OBT_V` VARCHAR(100) NULL
,
`LBT_V` VARCHAR(100) NULL
,
`OBS_V` VARCHAR(100) NULL
,
`EMPS_V` VARCHAR(100) NULL
,
`EDUCATION_V` VARCHAR(100) NULL
,
`SCHOOL_V` VARCHAR(100) NULL
,
`SECTION_V` VARCHAR(100) NULL
,
`ENTRY_DATE_V` VARCHAR(100) NULL
,
`GRADUATION_DATE_V` VARCHAR(100) NULL
,
`GRADUATION_STAT_V` VARCHAR(100) NULL
,
`SALARY_V` VARCHAR(100) NULL
,
`LABOR_CLASS_V` VARCHAR(100) NULL
,
`HEALTH_CLASS_V` VARCHAR(100) NULL
,
`TRANFER_DATE_V` VARCHAR(100) NULL
,
`ROLLOUT_DATE_V` VARCHAR(100) NULL
,
`FAMILY_NUM_V` VARCHAR(100) NULL
,
`RIA_V` VARCHAR(100) NULL
,
`RCR_V` VARCHAR(100) NULL
,
`RPR_V` VARCHAR(100) NULL
,
`CREATE_TIME_V` VARCHAR(100) NULL
,
`CREATE_USER_V` VARCHAR(100) NULL
,
`MODIFY_TIME_V` VARCHAR(100) NULL
,
`MODIFY_USER_V` VARCHAR(100) NULL
,
`AXTMODIFY` VARCHAR(100) NULL
,
PRIMARY KEY (`SID`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `sysadminmenucaption`;
CREATE TABLE `sysadminmenucaption` (
`SID` varchar(100) NOT NULL,
`SUB_MENU` varchar(100) DEFAULT NULL,
`MENU_ITEM` varchar(100) DEFAULT NULL,
`LANGUAGE_TYPE` varchar(100) DEFAULT NULL,
`LANGUAGE` varchar(100) DEFAULT NULL,
`MENU_TREE_SID` varchar(100) NOT NULL,
PRIMARY KEY (`SID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

想抓取  CREATE TABLE  `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID`    以下的行数到     )ENGINE=MyISAM DEFAULT CHARSET=utf8;    为止
且只要抓前面的`XXX`後面的 VARCHAR(100) NOT NULL 不要
CREATE TABLE  `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID` 是不固定的只知道前面的CREATE TABLE  `COMPANLY20131115
并输出成result.txt     请问该如何做?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-12-3 10:29:29 | 显示全部楼层
且只要抓`XXX`後面的 VARCHAR(100) NOT NULL  ,  不要

不要什么?
 楼主| 发表于 2013-12-3 10:41:18 | 显示全部楼层
回复 2# DAIC
只要抓前面的`XXX`後面的  VARCHAR(100) NOT NULL 不要
如 `SID` VARCHAR(100) NOT NULL  ,     只要 `SID`
发表于 2013-12-3 10:47:36 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (Companly20131115.sql) do (
  3.   if "%%i" equ "CREATE TABLE  `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID` (" set flag=1
  4.   if "%%i" equ ")ENGINE=MyISAM DEFAULT CHARSET=utf8;" set "flag="
  5.   if defined flag (set str=%%i&set str=!str:*`=!
  6.   if "!str:`=!" neq "%%i" (
  7.     for /f "tokens=1 delims=`" %%j in ("!str!") do echo,%%j
  8.     )
  9.   )
  10. )>>result.txt
  11. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2013-12-3 11:26:40 | 显示全部楼层
回复 3# hp051247767
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "fileSrc=Companly20131115.sql"
  4. set "fileDst=result.txt"
  5. REM 计算从哪一行开始
  6. for /f "tokens=1 delims=:" %%i in ('findstr /n "CREATE.*TABLE.*COMPANLY20131115" %fileSrc%') do (
  7.     set lineBegin=%%i
  8. )
  9. REM 计算到哪一行结束
  10. for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"ENGINE=MyISAM DEFAULT CHARSET=utf8" %fileSrc%') do (
  11.     set lineEnd=%%i
  12. )
  13. set /a n=lineEnd-lineBegin
  14. REM 获取需要的内容
  15. call :Fetch_Lines %lineBegin% >%fileDst%
  16. goto :eof

  17. :Fetch_Lines
  18. for /f "skip=%1 delims=" %%i in (%fileSrc%) do (
  19.     set /a m+=1
  20.     if !m! lss !n! (
  21.         set str=%%i
  22.         if "!str:* `=!" neq "%%i" (
  23.             set str=`!str:* `=!
  24.         )
  25.         if "!str:`=!" neq "!str!" (
  26.             if "!str:~0,1!" equ "`" (
  27.                 for /f "tokens=1 delims=`" %%j in ("!str!") do (
  28.                     echo %%j
  29.                 )
  30.             )
  31.         )
  32.     )
  33. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-12-3 12:23:41 | 显示全部楼层
感谢各位~~谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:51 , Processed in 0.033640 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表