Board logo

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

作者: jie_xin    时间: 2010-8-22 10:07     标题: [已解决]批处理怎样将指定字符替换为百分号?

批处理要实现的目的:

将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 编辑 ]
作者: qq506657335    时间: 2010-8-22 13:55

在百分号千面加个 " ^ "应该可以解决
作者: jie_xin    时间: 2010-8-22 18:03

试过这个方法,及加双引号,都不行
作者: sgaizxt001    时间: 2010-8-22 20:42

换个思路,你看情况修改一下代码
  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
复制代码

作者: FOR    时间: 2010-8-22 21:03

百分号需用百分号来转义 如显示 %2  则需要  echo %%2
作者: CUer    时间: 2010-8-22 21:21

  1. sed "s/aaa/%aaa%/g" 1.txt >2.txt
复制代码
  1. 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

  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
复制代码

作者: 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%%%%试试!~

如:
  1. 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://bbs.bathome.net/) Powered by Discuz! 7.2