标题: 连续百分号的问题
[打印本页]
作者: nayezi
时间: 2007-10-20 17:44
标题: 连续百分号的问题
@echo ┌────────────────────────────────────────────┐
@echo │ %a% %b%%%%space%
@echo └────────────────────────────────────────────┘
@echo off
这是我随便截取的一个进度条的代码片断,刚学批处理不久,看到很多地方出现连续%(我指的是多于2个)。请问连续百分号具体有什么用法?在论坛里找也只能找到下列关于百分号用法的说明:
① 两个连续的%表示在预处理中脱为一个%。
② 批处理中,在for语句的in子句之前,连续两个%紧跟一个字符(可以是字母、数字和一些特定字符),表示指定一个循环或者遍历指标变量。
③ 批处理中,在for语句中,使用与in之前指定的指标变量相同的串,表示引用这个指标变量。
第二点和第三点我都懂,难道我提到的问题和第一点相关?请高手帮忙解答,最好有例子。
Last edited by nayezi on 2007-10-20 at 06:00 PM ]
作者: fastslz
时间: 2007-10-20 18:47
@echo off
set 一=1
set 二=2
set 三=3
echo %一%%二%%三%
echo 当前系统目录%windir%
pause
作者: nayezi
时间: 2007-10-20 19:27
楼上误会了,我说的是连续的,你举这个例子我能看懂。但还是谢谢,还请大家帮忙解答下。相关代码我一时半会也找不到,我说的连续百分号是形如%%%%%a%这样的情况!
作者: nayezi
时间: 2007-10-20 19:33
如求硬盘剩余空间BAT代码:
@echo off
setlocal enabledelayedexpansion
:Main
cls
set /a num2=1024*1024
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
set num1=0
set num3_str=
set num4=
for /f "tokens=3" %%j in ('dir /-c %%i:\ 2^>nul') do set num1=%%j
if not "!num1!"=="0" (
call :loop
for /f "delims=0 tokens=*" %%k in ("!num3_str!") do set num3_str=%%k
echo.
echo %%i 盘剩余空间为 !num3_str! MB
echo.
)
)
pause
goto Main
:loop
:: 求商
set /a num3=%num4%%num1:~0,1%/%num2%
:: 求商序列
set num3_str=%num3_str%%num3%
:: 求余
set /a num4=%num4%%num1:~0,1%%%%num2%
if %num4% equ 0 set num4=
set num1=%num1:~1%
if not "%num1%"=="" goto loop
goto :eof
求余跳转里出现的%num4%%num1:~0,1%%%%num2%里包含4个连续百分号。请高手解释下连续百分号用法。这个例子有点牵强,但却代表了我的疑惑。
作者: fastslz
时间: 2007-10-20 22:18
@echo off
set /a a=100+20%
echo 算术题100+20%%=%a%对吗?
pause
看这个例子
绿的%是算术运算符
红的%是传递下一个%为显示符号