Board logo

标题: [文本处理] 批处理如何提取指定文本前部分。 [打印本页]

作者: 小智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++秒杀之,尤其是大文件.
如果文件比较多,就用脚本:
  1. 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

  1. Foreach($str in (GC .\00.txt)){$string=$str.split("-")[-1].trim(); $aa=$str -replace "-$string",""; $aa;}
复制代码
去除最后一项。不限列数。
作者: /zhqsystem/zhq    时间: 2018-11-3 22:51

  1. for /f "delims=" %%i in ("S-1-5-21-3819716074-1220053365-2469518100-500")do (
  2. set "#=%%i"
  3. set "#=!#:-=.!"
  4. for /f "delims=" %%i in ("!#!")do (
  5.   set "#=%%~ni"
  6.   set "#=!#:.=-!"
  7. )
  8. echo,!#!
  9. )
  10. rem 2
  11. set "$=S-1-5-21-3819716074-1220053365-2469518100-500"
  12. for /l %%n in (1,1,7)do set "$%%n="
  13. for /l %%n in (1,1,7)do if defined $ for /f "tokens=1,* delims=-" %%y in ("!$!")do set "$%%n=%%y"&&set "$=%%z"
  14. set "$="
  15. for /l %%n in (1,1,7)do if defined $ (set "$=!$!-!$%%n!")else (set "$=!$%%n!")
  16. echo,!$!
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2