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

[原创] 批处理中转义符号和引号之间的恶魔法则

今天算了忙上了18个小时了......在研究批进度条时发现引号和转义之间的暧昧关系..终于在历时4个小时的整理中把这个教程弄完......这里要谢谢batman提供的帮助:
第一次发,不知道怎么格式才好.就发我自己学习时最常用的代码加语句测试方式.
教程如下:
  1. @echo off
  2. title 引号与转义符号的恶魔规则()
  3. color 5a
  4. echo.
  5. echo.
  6. echo by.............【极度沉沦】................(辅导batman)
  7. echo.
  8. echo.
  9. echo 在搜索百度.goole及相关批论坛均无发现....
  10. echo.
  11. echo.今晚在咨询师傅时:师傅说真是活到老学到老.他们以前都没有注意这方面
  12. echo.
  13. echo 在""中的特殊字符不需要加转义符号否则失去意义
  14. echo.
  15. echo 加了的效果
  16. set "a=echo 12345&echo ^>nul"
  17. %a%
  18. pause
  19. echo 没有加的效果
  20. set "a=echo 12345&echo >nul"
  21. %a%
  22. pause
  23. echo.如果加的^个数是偶数2k就相当与转换成k个普通的符号^没有转义的意思,如果加的^个数是奇数2k+1就相当与前2k转换成k个普通的^而最后个为转义字符
  24. echo.
  25. echo.
  26. echo 以下是偶数的效果
  27. set "a=echo 12345&echo ^^^^123"
  28. %a%
  29. pause
  30. echo 以下是奇数的效果
  31. set "a=echo 12345&echo ^^^123"
  32. %a%
  33. pause
  34. echo.
  35. echo.
  36. echo 接下来是''与""中^的区别
  37. echo.
  38. echo.
  39. echo 如果特殊符号在''单引号中则全部的特殊符号都得加上转义符号
  40. echo.
  41. echo.
  42. echo ''单引号中加入转义符号的效果
  43. for /f "delims=" %%a in ('ipconfig /all^|findstr /i "ip"') do echo %%a
  44. pause>nul
  45. echo.
  46. rem echo ''单引号中不加入转义符号的效果
  47. rem for /f "delims=" %%a in ('ipconfig /all|findstr /i "ip"') do echo %%a
  48. rem pause>nul(执行出错)
  49. echo 普通时候不需要考虑转义情况(指没有""双引号,单引号'')
  50. ipconfig /all|findstr /i "ip"
  51. pause>nul
  52. echo.
  53. echo 单引号的应用举例1
  54. for /f %%a in ('^(echo 1234^&echo 435648^&echo 43123^)^|findstr  "123"^|findstr "43"') do echo %%a
  55. pause>nul
  56. echo.
  57. echo 单引号的应用举例2
  58. echo.
  59. for /f %%a in ('^(echo 1234^&echo 5648^&echo 4312^)^|findstr  "12"^|findstr "34"') do echo %%a
  60. pause>nul
  61. echo.看看以下进度条...区别就在其中了
  62. echo 引号类循环..................进度
  63. set "a=set /p=■<nul&ping/n 1 127.1 >nul"
  64. echo.
  65. echo  程序正在初始化. . .
  66. echo.
  67. for /l %%i in (0 1 39) do %a%
  68. pause>nul
  69. @echo off
  70. title 初始化进行中
  71. color 1f
  72. echo 在双引号内的特殊符号不需要加转义符号(相当于默认就加上了)
  73. set "a=set /p=■<nul&ping/n 1 127.1 >nul&"
  74. echo.
  75. echo  程序正在初始化. . .
  76. echo.
  77. %a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%
  78. pause>nul
  79. @echo off
  80. title 初始化进行中
  81. color 1f
  82. echo 为了echo显示内容在引用set的变量是我们必须使用转义符号把符号转换成普通含义
  83. set a=set /p=■^<nul^&ping/n 1 127.1 ^>nul^&
  84. echo.
  85. echo  程序正在初始化. . .
  86. echo.
  87. %a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%
  88. pause>nul
  89. @echo off
  90. title 初始化进行中
  91. color 1f
  92. echo 先输出空格...再逐一替换...........
  93. set a=set /p=■^<nul^&ping/n 1 127.1 ^>nul^&
  94. echo.
  95. echo  程序正在初始化. . .
  96. echo.
  97. set/p=  <nul&%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%
  98. echo   100%%
  99. pause>nul
复制代码

我写这个教程是为了让更多初学者少走弯路....欢迎高手们指正问题.............................
菜鸟发贴,欢迎大家发现问题,好及时改正.

[ 本帖最后由 woxingwoshu007 于 2009-4-22 21:35 编辑 ]
3

评分人数

回复 3楼 的帖子

晕..其中有一个帖子求助的就是我自己(我为了这个问题一开始多方求助..汗颜).....谢谢提议以后会改正

[ 本帖最后由 woxingwoshu007 于 2009-4-22 21:36 编辑 ]

TOP

回复 2楼 的帖子

太喜欢你了..巡查..每次我发贴都会收到你的指教..我虚心接受...我开心我快乐在这里成长学习ing..................顶batcher

TOP

回复 6楼 的帖子

嗯..我只是希望自己能够学好知识..当然也能帮助到别人....欢迎一切指正我虚心接受

TOP

返回列表