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

[文本处理] [已解决]批处理怎样将指定字符替换为百分号?

批处理要实现的目的:

将aaa替换为%aaa%,但无法输出百分号。

双写%%、加^、加双引号,的方法,都是不行的


希望能有人告知该如何写!或者提供其他替换文本的方法

我是这样写的:
  1. @echo off
  2. call :replace uuid.txt aaa %aaa%  > uuid1.txt
  3. :replace
  4.     setlocal ENABLEDELAYEDEXPANSION
  5.     for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3!
  6.     endlocal
  7. goto :eof
  8. pause
复制代码

[ 本帖最后由 jie_xin 于 2010-8-28 10:45 编辑 ]

在百分号千面加个 " ^ "应该可以解决

TOP

试过这个方法,及加双引号,都不行

TOP

换个思路,你看情况修改一下代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%a in (a.txt) do (
  4.   set str=%%a
  5.   set str=!str:aaa=#####aaa#####!
  6.   set str=!str:#####=%%!
  7.   echo !str!
  8. )
  9. pause
复制代码
努力学习,努力挣分

TOP

百分号需用百分号来转义 如显示 %2  则需要  echo %%2

TOP

  1. sed "s/aaa/%aaa%/g" 1.txt >2.txt
复制代码
  1. gawk "gsub(/aaa/,\"%aaa%\")" 1.txt >>2.txt
复制代码

TOP

回复 5楼 的帖子

麻烦看下我的要求。
我不是要echo百分号
是需要替换文本中的字符为百分号。

双写%%,及加双引号,都是不行的

TOP

回复 6楼 的帖子

你的2个方法,试过都不行啊

TOP

回复 4楼 的帖子

我是需要替换到文本当中,不是显示屏幕。

麻烦再帮帮我

TOP

你需要考虑一下特殊情况,比如替换you为me,当遇到your的时候,your也会被替换mer。
你把echo !str!改为echo !str! >>tmp_.txt就可以了
努力学习,努力挣分

TOP

回复 4楼 的帖子

我试了下你的方法,只能是输出改变的结果,而其他为改变的数据,不能输出到新的文件。不知道还有么有解决办法

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=*" %%a in (a.txt) do (
  3.   set str=%%a
  4.   for %%b in ("%%") do echo !str:aaa=%%~baaa%%~b!
  5. ))>uuid1.txt
  6. pause
复制代码

TOP

非常感谢你的帮助。

方法可行。谢谢

TOP

回复 8楼 的帖子

可能是你没有gawk和sed吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

对。没有你提到的程序。

我觉得,用MS直接支持的命令比较好。

TOP

返回列表