中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 22:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » call调用标签段时的参数传递该如何理解? 查看 1,445 回复 5
楼 主 call调用标签段时的参数传递该如何理解? 发表于 2006-10-06 10:25 ·  中国 广东 清远 联通
初级用户
积分 32
发帖 13
注册 2006-10-03 08:22
19年会员
UID 64401
状态 离线
以下是版主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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
namejm -4 2006-10-19 00:52
2 发表于 2006-10-06 11:57 ·  中国 广东 清远 联通
初级用户
积分 32
发帖 13
注册 2006-10-03 08:22
19年会员
UID 64401
状态 离线
请问各位高手,%*的意思是不是和tokens=*里的*一样也是忽略空格啊?!
3 发表于 2006-10-06 12:26 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
: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 发表于 2006-10-06 12:41 ·  中国 广东 云浮 电信
荣誉版主
★★★
积分 718
发帖 313
注册 2005-09-26 00:00
20年会员
UID 42844
性别 男
状态 离线
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 发表于 2006-12-04 13:04 ·  中国 北京 海淀区 联通
新手上路
积分 19
发帖 9
注册 2006-11-29 15:24
19年会员
UID 72098
性别 男
状态 离线
DOS,代表着自由开放与发展,我们努力起來,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
6 发表于 2007-12-15 19:31 ·  中国 北京 阿里云BGP数据中心
新手上路
积分 4
发帖 2
注册 2007-11-06 11:37
18年会员
UID 101851
性别 男
状态 离线
很好的 又学会了点东东^_^
论坛跳转: