找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23686|回复: 4

[其他] 批处理如何做到命令后面的参数对顺序无要求?

[复制链接]
发表于 2013-4-27 14:43:44 | 显示全部楼层 |阅读模式
我们知道,dir /on d:\和dir d: /on都可以实现命令,开关的位置不同,但是系统仍然区分了哪个是开关,哪个是参数,
请问系统是怎样做到的?
发表于 2013-4-27 15:39:11 | 显示全部楼层
编程做到的
 楼主| 发表于 2013-4-27 15:47:03 | 显示全部楼层
本帖最后由 yoyobye 于 2013-4-27 15:48 编辑

有例子吗? 我见到的一般是if %1==** %2==** 对顺序有要求,它是怎样做到的?对顺序无要求
发表于 2013-4-27 18:25:13 | 显示全部楼层
举个栗子:
  1. @echo off
  2. call :test /a 123
  3. echo;
  4. call :test 456 /b
  5. pause&exit

  6. :test
  7. setlocal disabledelayedexpansion
  8. set "m=0"
  9. for %%a in (%*) do (
  10.         for /f "tokens=* delims=/-" %%z in ("%%a") do (
  11.                 if "%%a" neq "%%z" set "开关[%%a]=enable"
  12.         )
  13.         if not defined 开关[%%a] (
  14.                 set /a m+=1
  15.                 setlocal enabledelayedexpansion
  16.                 for %%z in (!m!) do endlocal&set "参数[%%z]=%%a"
  17.         )
  18. )
  19. echo 取得的开关与参数如下:
  20. set 开关
  21. set 参数
  22. endlocal&exit/b
复制代码
 楼主| 发表于 2013-4-29 18:38:08 | 显示全部楼层
谢谢楼上!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:32 , Processed in 0.017570 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表