找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28188|回复: 4

[文本处理] 批处理怎样删除两个指定字符串之间的字符/内容?

[复制链接]
发表于 2010-12-25 13:46:45 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-4-11 13:51 编辑

X26.546 Y-5.914 Z-1.465
X26.633 Y-5.811 Z-1.505
X26.72 Y-5.707 Z-1.557
X26.806 Y-5.604 Z-1.622
X26.85 Y-5.552 Z-1.661
X26.893 Y-5.5 Z-1.724
G00 Z.276
Z10.
G0 G53 Z0.M09
G29Q11-2  D3R1.5  光  -0.05  -1.8    1
M30

请问批处理怎么删除M09,M30 之间的字符?
M09,M30 之间的字符是会变的。
我只会一些比如del, dir 的简单命令!   求助啊!

文件名为:*.tat

[ 本帖最后由 a406575115 于 2010-12-25 13:50 编辑 ]
发表于 2010-12-25 16:01:54 | 显示全部楼层
能否在顶楼描述一下你希望得到的结果是什么?是把倒数第二行删掉么?
发表于 2010-12-25 17:35:52 | 显示全部楼层
“M09,M30 之间的字符是会变的。”那么其他字符会变吗?特别是M09和M30所在行的内容、位置等。
 楼主| 发表于 2010-12-25 18:36:26 | 显示全部楼层
X26.806 Y-5.604 Z-1.622
X26.85 Y-5.552 Z-1.661
X26.893 Y-5.5 Z-1.724
G00 Z.276
Z10.
G0 G53 Z0.M09
G29Q11-2  D3R1.5  光  -0.05  -1.8    1
M30


G0 G53 Z0.M09 , M30 都不变   
其实就是要把: G29Q11-2  D3R1.5  光  -0.05  -1.8    1   这行删了 。
但这行是每个文件里的不一样。

要的结果是:
X26.893 Y-5.5 Z-1.724
G00 Z.276
Z10.
G0 G53 Z0.M09
M30

一位热心的朋友给我写了一个,可以用。
欢迎参详、或精简。下面是代码,也希望可以帮到有需要的人。
当然可以完成的也不止一种办法。

@echo off&color f1&setlocal enabledelayedexpansion
set s1=M09
set s2=M30
echo/&echo 正在处理
for /f "delims=" %%a in ('dir/b/a-d *.txt')do (
   set f=&echo   %%a&set/a n+=1
   (for /f "usebackq delims=" %%b in ("%%a")do (
    if not defined f echo.%%b
    set hh=%%b
    if not "!hh:%s1%=!"=="%%b" set f=y
    if not "!hh:%s2%=!"=="%%b" set f=&echo.%%b
   ))>ykytemp
   move/y ykytemp "%%a")
echo/&echo  OK 共处理 %n% 个文件
pause
发表于 2010-12-25 18:48:55 | 显示全部楼层
单文件,不保留空行:
  1. @echo off
  2. (for /f "usebackq delims=" %%b in ("1.txt")do (
  3.     if /i "%%b"=="M30" set f=
  4.     if not defined f echo %%b
  5.     if /i "%%b"=="G0 G53 Z0.M09" set f==
  6. ))>temp
  7. move temp "1.txt"
复制代码
多文件,保留空行,跳过不需要修改的文件:
  1. @echo off
  2. for %%c in (*.txt)do (
  3.     set a=&set b=
  4.     (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%c"')do (
  5.         if /i "%%b"=="M30" set a=
  6.         if not defined a echo/%%b
  7.         if /i "%%b"=="G0 G53 Z0.M09" set a==&set b==
  8.     ))>temp
  9.     if defined b move temp "%%c"
  10. )
  11. if exist temp del temp
复制代码

[ 本帖最后由 hanyeguxing 于 2010-12-25 19:24 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:41 , Processed in 0.018982 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表