标题: [其他] 变量替换引号和替换其他字符不能写在同一行 [打印本页]
作者: 随风 时间: 2011-6-3 01:19 标题: 变量替换引号和替换其他字符不能写在同一行
本帖最后由 随风 于 2011-6-3 02:19 编辑
遇到这个问题,不解中
a.txt-
- varvar:&rdquo
- r:“hjf
- abc"i
复制代码
将for中三个set 写一行就无法替换,显示:&rdquo不是内部命令-
- @echo off
- for /f "delims=" %%a in (a.txt) do (
- set "var=%%a"
- setlocal enabledelayedexpansion
- set "var=!var:"=!"
- set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
- echo !var!
- )
- pause
复制代码
作者: CrLf 时间: 2011-6-3 02:46
存在奇数个引号时会造成错误配对,由于双引号之内的特殊字符(分隔符、连接符、转义符)会被转义,所以只能在引号对之外把奇数个双引号转义,也就是说,解决办法是把第一个(或者第奇数个)引号转义即可避免引号的错误划分
作者: batman 时间: 2011-6-3 09:45
xpsp3用户表示有这个问题存在。。。
作者: 601997526 时间: 2011-6-3 09:47
引号替换是要加转意^
而且替换时变量外不要加引号
比如你这样写就没问题了- set var=!var:^"=!&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
复制代码
作者: 随风 时间: 2011-6-3 11:17
我的是win7
以前用xp-sp2好像没有这个现象
作者: 601997526 时间: 2011-6-3 11:37
你们讨论的是直接运行贴出的代码还是说把第六七行改一行运行呢
作者: plp626 时间: 2011-6-3 18:32
总结了一下,做个备注。- @echo off
- for /f "delims=" %%a in (a.txt) do (
- set "var=%%a"
- setlocal enabledelayedexpansion
- set "var=!var:"=!"
- set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
- echo !var!
- endlocal
- )
- pause
-
- @echo off&set lf=^
-
-
- for /f "delims=" %%a in (a.txt) do (
- set "var=%%a"
- setlocal enabledelayedexpansion
- %换行符法% set "var=!var:"=!"%lf%set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
- echo !var!
- endlocal
- )
- pause
-
-
- for /f "delims=" %%a in (a.txt) do (
- set "var=%%a"
- setlocal enabledelayedexpansion
- %首引号转义法% set ^"var=!var:"=!"&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
- echo !var!
- endlocal
- )
- pause
-
-
- set "quot=""
- for /f "delims=" %%a in (a.txt) do (
- set "var=%%a"
- setlocal enabledelayedexpansion
- for %%q in (!quot!)do (
- %for变量法% set "var=!var:%%q=!"&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
- )
- echo !var!
- endlocal
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |