中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 21:48
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » call调用标签段时的参数传递该如何理解?
可打印版本  1,443 / 5
第1楼 pcl83 发表于 2006-10-06 10:25
初级用户 发帖 13 积分 32
call调用标签段时的参数传递该如何理解?
以下是版主3742668写的有关排序的批处理,小的新手,有些看不明白,望指点。
-------------------------------------------------------
@echo off
setlocal enabledelayedexpansion
set numbers=%random% %random% %random% %random% %random% %random% %random% %random%
echo 排序前数组为: %numbers%
call :sort %numbers%
echo 排序后数组为: %ret%
pause
goto :eof

:sort
set num=%1
set str=%*
for %%i in (%*) do if !num! gtr %%i set num=%%i
set ret=%ret% %num%
if not "!str:%num%=!" == "" call :sort !str:%num%=!
goto :eof
--------------------------------------------------
1、set num=%1这一句为什么只是把%1的头一个数字传给num;
比如%numbers%为:12 23 24 23 25 23 20 10
但是set num=%1却变成12呢?
2、%*是什么意思


──────────────── 版务记录 ────────────────
执行:namejm
原标题:求助!
现标题:call调用标签段时的参数传递该如何理解?
说明:因原标题过于模糊,不便于论坛的搜索和管理,在本提示发表三日之后,
  楼主尚未更改标题,现由本人强制修改标题,并扣除楼主4点积分。
──────────────── 版务记录 ────────────────


[ Last edited by namejm on 2006-10-19 at 00:57 ]
第2楼 pcl83 发表于 2006-10-06 11:57
初级用户 发帖 13 积分 32
请问各位高手,%*的意思是不是和tokens=*里的*一样也是忽略空格啊?!
第3楼 3742668 发表于 2006-10-06 12:26
荣誉版主 发帖 718 积分 2,013
:sort
set num=%1
set str=%*
echo %* & pause
for %%i in (%*) do if !num! gtr %%i set num=%%i
set ret=%ret% %num%
if not "!str:%num%=!" == "" call :sort !str:%num%=!
goto :eof

简单地自己试一下就知道了,哪儿看不明白就在哪儿用pause。
%*用在这里只是代表所有参数,还是和通配符的作用类似。
另外建议你修改一下标题。例如:关于%*的用法。
第4楼 220110 发表于 2006-10-06 12:41
荣誉版主 发帖 313 积分 718
A:

1. call :sort %numbers%
就是 call :sort 12 23 24 23 25 23 20 10
对应 call %0 %1 %2 %3 %4 %5 %6 %7 %8
所以 set num=%1却变成12.

2.
%* 是所有参数(不包括 %0)可引用的通配符,这些参数(整体)传递到批处理文件中。
%* 编辑符是唯一可代表在批处理文件中传递的所有参数的编辑符。
%* = %1 %2 %3 %4 %5 %6 %7 %8 %9
第5楼 31676201 发表于 2006-12-04 13:04
新手上路 发帖 9 积分 19
DOS,代表着自由开放与发展,我们努力起來,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
第6楼 fllwt 发表于 2007-12-15 19:31
新手上路 发帖 2 积分 4
很好的 又学会了点东东^_^
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023