[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何提取指定文本前部分。

批处理如何提取指定文本前部分。文本内容是:
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也有可能。因为字符串长度不一样,所以不会提取了。求好心人。万分感谢。

  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,!$!
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

  1. Foreach($str in (GC .\00.txt)){$string=$str.split("-")[-1].trim(); $aa=$str -replace "-$string",""; $aa;}
复制代码
去除最后一项。不限列数。

TOP

本帖最后由 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
复制代码
QQ 33892006

TOP

返回列表