标题: [文本处理] [已解決]BAT如何抓取指定字串以下的行数 [打印本页]
作者: hp051247767 时间: 2013-12-3 10:04 标题: [已解決]BAT如何抓取指定字串以下的行数
本帖最后由 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 请问该如何做?
作者: DAIC 时间: 2013-12-3 10:29
且只要抓`XXX`後面的 VARCHAR(100) NOT NULL , 不要
不要什么?
作者: hp051247767 时间: 2013-12-3 10:41
回复 2# DAIC
只要抓前面的`XXX`後面的 VARCHAR(100) NOT NULL 不要
如 `SID` VARCHAR(100) NOT NULL , 只要 `SID`
作者: foxJL 时间: 2013-12-3 10:47
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (Companly20131115.sql) do (
- if "%%i" equ "CREATE TABLE `COMPANLY20131115BASIC_EMPLOYEE_DATA_GRID` (" set flag=1
- if "%%i" equ ")ENGINE=MyISAM DEFAULT CHARSET=utf8;" set "flag="
- if defined flag (set str=%%i&set str=!str:*`=!
- if "!str:`=!" neq "%%i" (
- for /f "tokens=1 delims=`" %%j in ("!str!") do echo,%%j
- )
- )
- )>>result.txt
- pause
复制代码
作者: DAIC 时间: 2013-12-3 11:26
回复 3# hp051247767 - @echo off
- setlocal enabledelayedexpansion
- set "fileSrc=Companly20131115.sql"
- set "fileDst=result.txt"
- REM 计算从哪一行开始
- for /f "tokens=1 delims=:" %%i in ('findstr /n "CREATE.*TABLE.*COMPANLY20131115" %fileSrc%') do (
- set lineBegin=%%i
- )
- REM 计算到哪一行结束
- for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"ENGINE=MyISAM DEFAULT CHARSET=utf8" %fileSrc%') do (
- set lineEnd=%%i
- )
- set /a n=lineEnd-lineBegin
- REM 获取需要的内容
- call :Fetch_Lines %lineBegin% >%fileDst%
- goto :eof
-
- :Fetch_Lines
- for /f "skip=%1 delims=" %%i in (%fileSrc%) do (
- set /a m+=1
- if !m! lss !n! (
- set str=%%i
- if "!str:* `=!" neq "%%i" (
- set str=`!str:* `=!
- )
- if "!str:`=!" neq "!str!" (
- if "!str:~0,1!" equ "`" (
- for /f "tokens=1 delims=`" %%j in ("!str!") do (
- echo %%j
- )
- )
- )
- )
- )
复制代码
作者: hp051247767 时间: 2013-12-3 12:23
感谢各位~~谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |