标题: [文本处理] 批处理如何提取指定文本前部分。 [打印本页]
作者: 小智BAT 时间: 2018-11-3 17:50 标题: 批处理如何提取指定文本前部分。
批处理如何提取指定文本前部分。文本内容是:
S-1-5-21-3819716074-1220053365-2469518100-500
S-1-5-21-3295793487-3555926548-2570937997-1000
S-1-5-21-1345997191-32814873-933358233-500
S-1-5-21-4249006249-2096679216-3520620559-500
S-1-5-21-2551216254-3674991118-1636815558-500
S-1-5-21-1703923866-2683559303-370969187-500
S-1-5-21-3463783545-3552493068-1315104039-500
我需提取S-1-5-21-3463783545-3552493068-1315104039这部分。后面的不用。后面不一定就是500。有可能是1001到10002也有可能。因为字符串长度不一样,所以不会提取了。求好心人。万分感谢。
作者: yhcfsr 时间: 2018-11-3 19:10
本帖最后由 yhcfsr 于 2018-11-3 19:11 编辑
如果是少数几个文件,NOTEPAD++秒杀之,尤其是大文件.
如果文件比较多,就用脚本:- for /f "tokens=1-7 delims=-" %%a in ('type 1.txt') do echo;%%a-%%b-%%c-%%d-%%e-%%f-%%g
复制代码
作者: xczxczxcz 时间: 2018-11-3 20:21
- Foreach($str in (GC .\00.txt)){$string=$str.split("-")[-1].trim(); $aa=$str -replace "-$string",""; $aa;}
复制代码
去除最后一项。不限列数。
作者: /zhqsystem/zhq 时间: 2018-11-3 22:51
- for /f "delims=" %%i in ("S-1-5-21-3819716074-1220053365-2469518100-500")do (
- set "#=%%i"
- set "#=!#:-=.!"
- for /f "delims=" %%i in ("!#!")do (
- set "#=%%~ni"
- set "#=!#:.=-!"
- )
- echo,!#!
- )
- rem 2
- set "$=S-1-5-21-3819716074-1220053365-2469518100-500"
- for /l %%n in (1,1,7)do set "$%%n="
- for /l %%n in (1,1,7)do if defined $ for /f "tokens=1,* delims=-" %%y in ("!$!")do set "$%%n=%%y"&&set "$=%%z"
- set "$="
- for /l %%n in (1,1,7)do if defined $ (set "$=!$!-!$%%n!")else (set "$=!$%%n!")
- echo,!$!
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |