标题: 请高手帮我看看这个例子中的问题!!!
[打印本页]
作者: caucfeiyu
时间: 2007-4-18 16:27
标题: 请高手帮我看看这个例子中的问题!!!
在论坛上看到这个例子,但是不太懂其中的一个地方
例子:
@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 ]
作者: bjsh
时间: 2007-4-18 22:11
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里一句一句的运行 你就会明白了
作者: htysm
时间: 2007-4-19 00:38
解释的精彩,加分。^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 ]
作者: caucfeiyu
时间: 2007-4-19 02:49
谢谢两位的回答!又学到知识了!呵呵~!~!