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

[文本处理] 批处理如何删除txt文本中特定行末尾的指定字符串

本帖最后由 pcl_test 于 2016-12-10 12:51 编辑

各位大哥,请帮忙解决!  

在指定目录下查找全部“.txt”格式文件,删除文本中含有“G2003”的行末尾的-1、-2、-3、-4、-5、-6、-7、-8
1

评分人数

回复 3# /zhqsystem/zhq

    大神,怎样设定目录为在“D:\test\”下,全部“.txt”格式文件?

    我们的大神,完整代码是?

TOP

用正则秒杀一切算法,高效方便

TOP

(G2003.+ )(.+)-[1-8]$
\1\2
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

正则替换就一行啊。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 4# pcl_test
PCL大神还在岗位坚守啊!
很少用变量方式,都快忘了,处理速度快了不少
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq

for /l %%a in (1 1 8) do set -%%a=1
可以先对-1、-2、-3、-4、-5、-6、-7、-8定义,然后只要判断每个文本中含有“G2003”的每一行的最后两位字符是否定义过进行字符串截取即可,这样就不必每次判断都让for先跑8次

TOP

本帖最后由 /zhqsystem/zhq 于 2016-12-8 00:46 编辑

回复 1# bat9527
  1. for /f "delims=" %%i in ('type "%~f1"')do (set "not="
  2. for /f "delims=/" %%j in ("%%i")do if /i "%%~nj"=="G2003" (
  3.   for /f "tokens=1,* delims=-" %%j in ("%%i")do (
  4.    for /l %%n in (1,1,8)do if "%%~nk"=="%%n" set "not=y"
  5.    if defined not (
  6.     echo,%%j
  7.    )else (
  8.     echo,%%i
  9.    )
  10.   )
  11. )
  12. )
复制代码

依据楼下PCL大神指点追加,都不需要变量延迟执行,注:如果变量超过占用内存极限用建立和判断临时文件方式进行
  1. for /l %%n in (1,1,8)do set "-%%n=y"
  2. for /f "delims=" %%i in ('type "%~f1"')do (
  3. for /f "delims=/" %%j in ("%%i")do if /i "%%~nj"=="G2003" (
  4.   for /f "tokens=1,* delims=-" %%j in ("%%i")do (
  5.    if defined -%%~nk (
  6.     echo,%%j
  7.    )else (
  8.     echo,%%i
  9.    )
  10.   )
  11. )
  12. )
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

我不是高手,所以只好路过

TOP

返回列表