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

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

本帖最后由 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 编辑 ]

能否在顶楼描述一下你希望得到的结果是什么?是把倒数第二行删掉么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

“M09,M30 之间的字符是会变的。”那么其他字符会变吗?特别是M09和M30所在行的内容、位置等。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

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

TOP

单文件,不保留空行:
  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表