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

[其他] 变量替换引号和替换其他字符不能写在同一行

本帖最后由 随风 于 2011-6-3 02:19 编辑

遇到这个问题,不解中
a.txt
  1. varvar:&rdquo
  2. r:“hjf
  3. abc"i
复制代码
将for中三个set 写一行就无法替换,显示:&rdquo不是内部命令
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.    set "var=%%a"
  4.    setlocal enabledelayedexpansion
  5.    set "var=!var:"=!"
  6.    set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
  7.    echo !var!
  8. )
  9. pause
复制代码
技术问题请到论坛发帖求助!

总结了一下,做个备注。
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.    set "var=%%a"
  4.    setlocal enabledelayedexpansion
  5.    set "var=!var:"=!"
  6.       set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
  7.    echo !var!
  8.    endlocal
  9. )
  10. pause
  11. @echo off&set lf=^
  12. for /f "delims=" %%a in (a.txt) do (
  13.    set "var=%%a"
  14.    setlocal enabledelayedexpansion
  15. %换行符法%      set "var=!var:"=!"%lf%set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
  16.    echo !var!
  17.    endlocal
  18. )
  19. pause
  20. for /f "delims=" %%a in (a.txt) do (
  21.    set "var=%%a"
  22.    setlocal enabledelayedexpansion
  23. %首引号转义法%      set ^"var=!var:"=!"&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
  24.    echo !var!
  25.    endlocal
  26. )
  27. pause
  28.    set "quot=""
  29.    for /f "delims=" %%a in (a.txt) do (
  30.    set "var=%%a"
  31.    setlocal enabledelayedexpansion
  32.    for %%q in (!quot!)do (
  33. %for变量法%       set "var=!var:%%q=!"&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
  34.    )
  35.    echo !var!
  36.    endlocal
  37. )
  38. pause
复制代码
1

评分人数

    • zm900612: 用换行符的想法真好技术 + 1

TOP

你们讨论的是直接运行贴出的代码还是说把第六七行改一行运行呢

TOP

我的是win7  
以前用xp-sp2好像没有这个现象
技术问题请到论坛发帖求助!

TOP

引号替换是要加转意^
而且替换时变量外不要加引号
比如你这样写就没问题了
  1. set var=!var:^"=!&set "var=!var:&rdquo=!"&set "var=!var:&ldquo=!"
复制代码

TOP

xpsp3用户表示有这个问题存在。。。
***共同提高***

TOP

存在奇数个引号时会造成错误配对,由于双引号之内的特殊字符(分隔符、连接符、转义符)会被转义,所以只能在引号对之外把奇数个双引号转义,也就是说,解决办法是把第一个(或者第奇数个)引号转义即可避免引号的错误划分

TOP

返回列表