标题: [文本处理] [已解决]批处理怎样将指定字符替换为百分号? [打印本页]
作者: jie_xin 时间: 2010-8-22 10:07 标题: [已解决]批处理怎样将指定字符替换为百分号?
批处理要实现的目的:
将aaa替换为%aaa%,但无法输出百分号。
双写%%、加^、加双引号,的方法,都是不行的
希望能有人告知该如何写!或者提供其他替换文本的方法
我是这样写的:- @echo off
- call :replace uuid.txt aaa %aaa% > uuid1.txt
-
- :replace
- setlocal ENABLEDELAYEDEXPANSION
- for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3!
- endlocal
- goto :eof
-
- pause
复制代码
[ 本帖最后由 jie_xin 于 2010-8-28 10:45 编辑 ]
作者: qq506657335 时间: 2010-8-22 13:55
在百分号千面加个 " ^ "应该可以解决
作者: jie_xin 时间: 2010-8-22 18:03
试过这个方法,及加双引号,都不行
作者: sgaizxt001 时间: 2010-8-22 20:42
换个思路,你看情况修改一下代码- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in (a.txt) do (
- set str=%%a
- set str=!str:aaa=#####aaa#####!
- set str=!str:#####=%%!
- echo !str!
- )
- pause
复制代码
作者: FOR 时间: 2010-8-22 21:03
百分号需用百分号来转义 如显示 %2 则需要 echo %%2
作者: CUer 时间: 2010-8-22 21:21
- sed "s/aaa/%aaa%/g" 1.txt >2.txt
复制代码
- gawk "gsub(/aaa/,\"%aaa%\")" 1.txt >>2.txt
复制代码
作者: jie_xin 时间: 2010-8-23 09:19 标题: 回复 5楼 的帖子
麻烦看下我的要求。
我不是要echo百分号
是需要替换文本中的字符为百分号。
双写%%,及加双引号,都是不行的
作者: jie_xin 时间: 2010-8-23 09:21 标题: 回复 6楼 的帖子
你的2个方法,试过都不行啊
作者: jie_xin 时间: 2010-8-23 09:22 标题: 回复 4楼 的帖子
我是需要替换到文本当中,不是显示屏幕。
麻烦再帮帮我
作者: sgaizxt001 时间: 2010-8-23 13:02
你需要考虑一下特殊情况,比如替换you为me,当遇到your的时候,your也会被替换mer。
你把echo !str!改为echo !str! >>tmp_.txt就可以了
作者: jie_xin 时间: 2010-8-23 13:40 标题: 回复 4楼 的帖子
我试了下你的方法,只能是输出改变的结果,而其他为改变的数据,不能输出到新的文件。不知道还有么有解决办法
作者: terse 时间: 2010-8-23 15:22
- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=*" %%a in (a.txt) do (
- set str=%%a
- for %%b in ("%%") do echo !str:aaa=%%~baaa%%~b!
- ))>uuid1.txt
- pause
复制代码
作者: jie_xin 时间: 2010-8-24 09:38
非常感谢你的帮助。
方法可行。谢谢
作者: Batcher 时间: 2010-8-24 10:27 标题: 回复 8楼 的帖子
可能是你没有gawk和sed吧
作者: jie_xin 时间: 2010-8-24 13:00
对。没有你提到的程序。
我觉得,用MS直接支持的命令比较好。
作者: sleepinglord 时间: 2010-8-27 15:06
太复杂的文本操作,学学正则表达式吧……然后用UltraEdit或者其它什么脚本。
批处理不适合做这种事情。
作者: cjiabing 时间: 2010-8-27 20:32
该成%%aaa%%、%%%aaa%%%、%%%%aaa%%%%试试!~
如:- echo for /f "tokens=1,2,*" %%%%a in (batbot001.bat) do if "%%%%a"=="执行" echo %%%%b^&set pvar=%%%%c^&findstr /i /b "%%%%b" orderlist.txt^>^>^_folist.txt^&^&for ^/f "tokens=3*" %%%%i in (_folist.txt) do echo %%%%i %%%%j^>^>batbot001.bat>>batbot001.bat
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |