标题: [文件操作] [己解决]批处理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
- 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- set str="123eeee="wwww"234"
- for /l %%a in (0 1 100) do (
- if "!str:~%%a,11!"=="eeee="wwww"" set n=10
- set /a n-=1
- if !n! leq 0 set /p=%%a<nul
- )
复制代码
二、for /f- for /f "tokens=1-3 delims==" %%a in ("123eeee="wwww"234") do set tmp=%%a@%%b@%%a
- set tmp=%tmp:eeee@"wwww"=%
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |