中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 05:41
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 请高手帮我看看这个例子中的问题!!!
可打印版本  728 / 3
第1楼 caucfeiyu 发表于 2007-04-18 16:27
初级用户 发帖 35 积分 108 来自 河北廊坊
请高手帮我看看这个例子中的问题!!!
在论坛上看到这个例子,但是不太懂其中的一个地方
例子:
@echo off&setlocal enabledelayedexpansion&cls&color 0f&title Welcome to CN-DOS!
mode con: cols=30 lines=3
set "a= CN-DOS"
set "b="
set "c=12345689abcde"
echo\
:c
for /l %%a in (6,1,28) do (
set /a d=%random%%%13+1
call :pp %%a
)
goto c
:pp
set/p=!a:~-%1!<nul
set/p=!b:~0,%1!<nul
color 0!c:~%d%,1!
goto :eof
其中红色标注的是什么意思啊!!! 为什么要用%1呢,%1在这里是什么意思呢!
还有call :pp %%a这句话是什么意思啊
请高手帮我解释一下!谢谢!

[ Last edited by caucfeiyu on 2007-4-18 at 03:37 AM ]
第2楼 bjsh 发表于 2007-04-18 22:11
银牌会员 发帖 621 积分 2,000
call :pp %%a
是call的一种用法; 相当于调用 标签 :pp处的 "函数" %%a 为:pp 处用到的参数
call :pp %%a
把%%a 的参数传递给 :pp 并执行:pp后的命令直到碰到结束符;执行完后再返回到call处 并继续执行call 下面的语句;

而参数 %%a 在 :pp处调用是 是用 %1来表示的;

比如 %%a的值为 8

则 set /p=!a:~-%1!<nul相当于set /p=!a:~-8!<nul

至于 a:~-%1 的理解 给你个例子
set /p var=123456789
echo %var:~1%
echo %var:0,1%
echo %var:0,-1%
echo %var:-1%
在cmd里一句一句的运行 你就会明白了
第3楼 htysm 发表于 2007-04-19 00:38
高级用户 发帖 415 积分 866
解释的精彩,加分。^O^

更正一下:

@echo off
set var=123456789
echo %var%
echo %var:~1,5%
echo %var:~0,1%
echo %var:~0,-1%
echo %var:~-1%
pause

[ Last edited by htysm on 2007-4-19 at 12:47 AM ]
第4楼 caucfeiyu 发表于 2007-04-19 02:49
初级用户 发帖 35 积分 108 来自 河北廊坊
谢谢两位的回答!又学到知识了!呵呵~!~!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023