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

[文件操作] 【已解决】求助批处理替换特殊字符串小括号的问题?

关于替换特殊字符串的疑问!
例如文本文件test.txt内容如下:
"you are my super star!"
"you are :my super star!"
"you are my super star!"
如何将文本文件内容变成
you are my(not you) super star!
you are my(not you) super star!
you are my(not you) super star!
  1. @echo off
  2. echo "you are my super star!">test.txt
  3. echo "you are :my super star!">>test.txt
  4. echo "you are my super star!">>test.txt
  5. echo.
  6. @echo off
  7. ::去引号
  8. setlocal EnableDelayedExpansion
  9. for /f "tokens=* delims=" %%i in (test.txt) do (
  10.     set var=%%i
  11.     set var=!var:"=!
  12.     echo !var!>>ls.txt
  13.      
  14. )
  15. pause
  16. echo.
  17. @echo off
  18. ::去冒号
  19. setlocal EnableDelayedExpansion
  20. for /f "tokens=* delims=" %%i in (ls.txt) do (
  21.     set var=%%i
  22.     set var=!var::=!
  23.     echo !var!>>ls1.txt
  24.      
  25. )
  26. pause
  27. echo.
  28. ::把my替换为my (not you)
  29. @echo off
  30. setlocal EnableDelayedExpansion
  31. for /f "tokens=* delims=" %%i in (ls1.txt) do (
  32.     set var=%%i
  33.     set var=!var:my=my (not you)!
  34.     echo !var!
  35.      
  36. )
  37. echo.
  38. pause
复制代码
前两个都可以正常执行,但是第三个不能执行;
我估计应该是do后面的左括号遇到not you后面的右括号就终止了;
请高手指点怎么来实现被替换的字符为包含有小括号的情况!
当然可能还会有其他特殊字符不能按照正常的替换方式替换,请给出解决方案!谢谢
呵呵,后来我想用变量来替换
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set /p temp=my (not you)
  4. for /f "tokens=* delims=" %%i in (ls1.txt) do (
  5.     set var=%%i
  6.     set var=!var:my=!temp!!
  7. ::set var=!var:my=%temp%! 貌似这样也不可以!
  8.     echo !var!
  9.      
  10. )
  11. echo.
  12. pause
复制代码
希望各位高手指点O(∩_∩)O哈!
pause

[ 本帖最后由 jackelijie135 于 2009-3-17 20:37 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  1. @echo off
  2. echo "you are my super star!">test.txt
  3. echo "you are :my super star!">>test.txt
  4. echo "you are my super star!">>test.txt
  5. echo.
  6. @echo off
  7. ::去引号
  8. setlocal EnableDelayedExpansion
  9. for /f "tokens=* delims=" %%i in (test.txt) do (
  10.     set var=%%i
  11.     set var=!var:"=!
  12.     echo !var!>>ls.txt
  13.      
  14. )
  15. pause
  16. echo.
  17. @echo off
  18. ::去冒号
  19. setlocal EnableDelayedExpansion
  20. for /f "tokens=* delims=" %%i in (ls.txt) do (
  21.     set var=%%i
  22.     set var=!var::=!
  23.     echo !var!>>ls1.txt
  24.      
  25. )
  26. pause
  27. echo.
  28. ::把my替换为my (not you)
  29. @echo off
  30. setlocal EnableDelayedExpansion
  31. for /f "tokens=* delims=" %%i in (ls1.txt) do (
  32.     set var=%%i
  33.     set var=!var:my=my ^(not you^)!
  34.     echo !var!
  35.      
  36. )
  37. echo.
  38. pause
复制代码
把set var=!var:my=my (not you)!
改成这样试试
set var=!var:my=my ^(not you^)!

TOP

回复 2楼 的帖子

O(∩_∩)O哈哈~,谢谢你啊,可以啦

TOP

原理参见:
复合语句内部子语句的括号问题
http://bbs.verybat.org/viewthread.php?tid=10741&fromuid=37
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 4楼 的帖子

谢谢了,请问如何给别人加分啊,为了表示谢意,O(∩_∩)O~

TOP

回复 5楼 的帖子

列兵级别暂时无法加分,请参考:http://bbs.bathome.net/thread-1869-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表