Board logo

标题: [其他] 批处理如何做到命令后面的参数对顺序无要求? [打印本页]

作者: 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

举个栗子:
  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
复制代码

作者: yoyobye    时间: 2013-4-29 18:38

谢谢楼上!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2