Board logo

标题: 这段输出特殊字符的BAT代码看不懂啊! [打印本页]

作者: silience    时间: 2012-11-23 08:55     标题: 这段输出特殊字符的BAT代码看不懂啊!

  1. @echo off
  2. set count=0
  3. setlocal enabledelayedexpansion
  4. for /f "" %%a in ( 1.txt ) do (
  5.   if !count! equ 5 (
  6.    echo\& echo/
  7.    set count=0  
  8.    set /p= ^%%a <nul
  9.    
  10. ) else (
  11.    set /p= ^%%a <nul
  12.    if ^^%%a==^^! set /p= ^^%%a<nul
  13. )
  14. set /a count+=1
  15. )
  16. pause>nul
复制代码
====================================
1.txt
  1. ~
  2. !
  3. @
  4. #
  5. $
  6. %
  7. ^
  8. &
  9. *
  10. (
  11. )
  12. _
  13. +
  14. |
  15. {
  16. }
  17. :
  18. "
  19. <
  20. >
  21. ?
  22. /
  23. *
  24. -
  25. +
复制代码
=========================================================
当count<5:
set /p= ^%%a <nul
   if ^^%%a==^^! set /p= ^^%%a<nul
第一行会对字符进行转义 然后输出
第二行是如果%%a提取到的是!符号 再输出一次
可是结果是!只输出了一次
还有百分号不能用^来转移啊 这个代码也把百分号输出了 怎么做到的?我想不通啊
作者: CrLf    时间: 2012-11-23 10:13

本帖最后由 CrLf 于 2012-11-23 10:17 编辑

%是在for之前解释的,而!的解释时机则是在%a之后。
学下setlocal吧,用得恰当能解决很多问题
  1. setlocal disabledelayedexpansion
  2. echo !
  3. endlocal
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2