中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-13 19:06
楼 主 连续百分号的问题 发表于 2007-10-20 17:44 ·  中国 江苏 南京 电信
初级用户
积分 48
发帖 20
注册 2007-10-17 01:05
UID 99934
性别 男
状态 离线
@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 ]
2 发表于 2007-10-20 18:47 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@echo off
set 一=1
set 二=2
set 三=3
echo %一%%二%%三%
echo 当前系统目录%windir%
pause
第一高手 第二高手

3 发表于 2007-10-20 19:27 ·  中国 江苏 南京 电信
初级用户
积分 48
发帖 20
注册 2007-10-17 01:05
UID 99934
性别 男
状态 离线
楼上误会了,我说的是连续的,你举这个例子我能看懂。但还是谢谢,还请大家帮忙解答下。相关代码我一时半会也找不到,我说的连续百分号是形如%%%%%a%这样的情况!
4 发表于 2007-10-20 19:33 ·  中国 江苏 南京 电信
初级用户
积分 48
发帖 20
注册 2007-10-17 01:05
UID 99934
性别 男
状态 离线
如求硬盘剩余空间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个连续百分号。请高手解释下连续百分号用法。这个例子有点牵强,但却代表了我的疑惑。
5 发表于 2007-10-20 22:18 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@echo off
set /a a=100+20%
echo 算术题100+20%%=%a%对吗?
pause

看这个例子
绿的%是算术运算符
红的%是传递下一个%为显示符号
第一高手 第二高手

论坛跳转: