Board logo

标题: [文件操作] [己解决]批处理set命令怎么才能替换等号字符? [打印本页]

作者: dali618    时间: 2011-3-31 15:35     标题: [己解决]批处理set命令怎么才能替换等号字符?

假设有一个的文本(1.txt)内容为:
11111111111111111111111
22222222222222222222222
333333333eeee="wwww"ffffffffffffff
eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
sssssssssssssssssssssssssss

现在我要用批处理来删除eeee="wwww",也就是换其替换为空的意思

下面是我所用的代码,但不能替换=号
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (1.txt) do (
    set var=%%a
    set var=!var:eeee="wwww"=!
    echo.!var!
)
pause>nul

请问要怎样才能实现,在此先谢过了
作者: tmplinshi    时间: 2011-3-31 15:55

  1. sed -i "s/eeee=\x22wwww\x22//g" 1.txt
复制代码
下载 sed.exe 4.1.4:
http://bathome.net/thread-1114-1-1.html
作者: dali618    时间: 2011-3-31 16:01

2# tmplinshi


首选感谢版主的回答,我现在就去试一下,OK了,回来给你加分
作者: CrLf    时间: 2011-3-31 16:06

set替换默认以第一个等号为分隔符,所以据我所知不可能光用set变量替换完成,有两个折衷方案
一,for /l
  1. set str="123eeee="wwww"234"
  2. for /l %%a in (0 1 100) do (
  3. if "!str:~%%a,11!"=="eeee="wwww"" set n=10
  4. set /a n-=1
  5. if !n! leq 0 set /p=%%a<nul
  6. )
复制代码
二、for /f
  1. for /f "tokens=1-3 delims==" %%a in ("123eeee="wwww"234") do set tmp=%%a@%%b@%%a
  2. set tmp=%tmp:eeee@"wwww"=%
  3. echo %tmp:@==%
复制代码
但无论怎么弄,都很麻烦...
作者: dali618    时间: 2011-3-31 16:11

2# tmplinshi


感谢版主,己经解决,有一小点不明就是“X22”是不是代为引号的意思?
作者: dali618    时间: 2011-3-31 16:12

同样感谢4楼的朋友,用第三方己解决,不过有空还是参看一下你的
作者: dali618    时间: 2011-3-31 16:13

请问己解决标签在什么地文选上?
作者: tmplinshi    时间: 2011-3-31 16:18

2# tmplinshi


感谢版主,己经解决,有一小点不明就是“X22”是不是代为引号的意思?
dali618 发表于 2011-3-31 16:11

是。

--------------------
请问己解决标签在什么地文选上?
dali618 发表于 2011-3-31 16:13


直接在标题前加 [已解决]
作者: Batcher    时间: 2011-4-1 01:26

5# dali618


X代表16进制,16进制的22就是双引号的ASCII编码。




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