标题: 这段输出特殊字符的BAT代码看不懂啊! [打印本页]
作者: silience 时间: 2012-11-23 08:55 标题: 这段输出特殊字符的BAT代码看不懂啊!
- @echo off
- set count=0
- setlocal enabledelayedexpansion
- for /f "" %%a in ( 1.txt ) do (
- if !count! equ 5 (
- echo\& echo/
- set count=0
- set /p= ^%%a <nul
-
- ) else (
- set /p= ^%%a <nul
-
- if ^^%%a==^^! set /p= ^^%%a<nul
- )
- set /a count+=1
- )
- pause>nul
复制代码
====================================
1.txt- ~
- !
- @
- #
- $
- %
- ^
- &
- *
- (
- )
- _
- +
- |
- {
- }
- :
- "
- <
- >
- ?
- /
- *
- -
- +
复制代码
=========================================================
当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吧,用得恰当能解决很多问题- setlocal disabledelayedexpansion
- echo !
- endlocal
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |