![Board logo](images/default/logo.gif)
标题: [其他] 批处理如何做到命令后面的参数对顺序无要求? [打印本页]
作者: yoyobye 时间: 2013-4-27 14:43 标题: 批处理如何做到命令后面的参数对顺序无要求?
我们知道,dir /on d:\和dir d: /on都可以实现命令,开关的位置不同,但是系统仍然区分了哪个是开关,哪个是参数,
请问系统是怎样做到的?
作者: Demon 时间: 2013-4-27 15:39
编程做到的
作者: yoyobye 时间: 2013-4-27 15:47
本帖最后由 yoyobye 于 2013-4-27 15:48 编辑
有例子吗? 我见到的一般是if %1==** %2==** 对顺序有要求,它是怎样做到的?对顺序无要求
作者: CrLf 时间: 2013-4-27 18:25
举个栗子:- @echo off
- call :test /a 123
- echo;
- call :test 456 /b
- pause&exit
-
- :test
- setlocal disabledelayedexpansion
- set "m=0"
- for %%a in (%*) do (
- for /f "tokens=* delims=/-" %%z in ("%%a") do (
- if "%%a" neq "%%z" set "开关[%%a]=enable"
- )
- if not defined 开关[%%a] (
- set /a m+=1
- setlocal enabledelayedexpansion
- for %%z in (!m!) do endlocal&set "参数[%%z]=%%a"
- )
- )
- echo 取得的开关与参数如下:
- set 开关
- set 参数
- endlocal&exit/b
复制代码
作者: yoyobye 时间: 2013-4-29 18:38
谢谢楼上!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |