标题: [文本处理] [已解决]批处理如何提取制定文字后面的第一个数字? [打印本页]
作者: xptool 时间: 2011-2-8 22:34 标题: [已解决]批处理如何提取制定文字后面的第一个数字?
本帖最后由 xptool 于 2011-10-12 19:49 编辑
如何用批处理提取制定文字后面的第一个数字
13551非官方价格法规范历史 3 3255 426方价格法规范
非官方价格法规范 5244 非官方价格法规范 历史67890方价格法规范
非官方价格法规范历史6 5244
历史 667573 55
我想提取历史后面第一个数字
结果是3
67890
6
667573
请朋友帮帮忙
如果只提取第一个历史后面的数字 应该怎么写呢
[ 本帖最后由 xptool 于 2011-2-9 13:00 编辑 ]
作者: 随风 时间: 2011-2-8 23:34
每行只有一个“历史”- @echo off
- for /f "delims=" %%i in (a.txt) do (
- set sun=%%i
- setlocal enabledelayedexpansion
- set str=!sun:*历史=!
- if not "!str!"=="!sun!" (
- for /f "tokens=1 delims= " %%j in ("!str!") do set str=a%%j
- set str=!str: =!a
- for /l %%j in (0 1 9) do set str=!str:%%j= %%j !
- for /f "tokens=1* delims= " %%a in ("!str!") do set str=%%b
- set str=!str: =!
- for /l %%j in (0 1 9) do set str=!str:%%j= %%j !
- for %%a in (!str!) do (
- set var=!var!!num!
- set num=%%a
- )
- echo !var!
- )
- endlocal
- )
- pause
复制代码
作者: CrLf 时间: 2011-2-9 02:59
支持一行多个历史,但是因为偷懒,只过滤历史与数字之间的一个空格,多了就会漏:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- set a=%%a&set b= %%a
- for /l %%b in (0 1 9) do set a=!a:%%b= !
- set a=!a:历史 = !
- for %%b in (!a!) do set b=!b:%%b=!
- set b=!b:史 =史!
- for /l %%b in (0 1 9) do set b=!b:%%b历=%%b 历!
- for %%b in (!b!) do (
- set c=%%b
- if "!c:~0,2!"=="历史" echo;!c:~2!
- )
- )
- pause
复制代码
作者: xptool 时间: 2011-2-9 12:11
谢谢帮助
如果只提取第一个历史后面的数字 应该怎么写呢
作者: Batcher 时间: 2011-2-9 12:14 标题: 回复 4楼 的帖子
请把所有的需求全部更新到顶楼
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |