![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 20:46 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理参数问题 |
| 可打印版本 1,400 / 8 |
| 第1楼 doslike | 发表于 2010-02-24 12:12 |
| 版主 发帖 285 积分 326 来自 黑龙江省 | |
|
批处理参数问题 我在做批处理的时候遇到了点难题。
比如: 执行批处理的时候,需输入easytree n command来实现新建名为“command”的文件夹,需输入easytree d command来删除command的文件夹。 问:如何让批处理像其他程序那样用/n或/d? |
|
| 第2楼 HAT | 发表于 2010-02-24 15:08 |
| 版主 发帖 5,017 积分 9,023 | |
|
用if命令判断参数%1、%2等,再跳转到指定标签。
|
|
| 第3楼 doslike | 发表于 2010-02-24 16:15 |
| 版主 发帖 285 积分 326 来自 黑龙江省 | |
|
我说的是在参数前面加/!
如 /e |
|
| 第4楼 HAT | 发表于 2010-02-24 20:09 |
| 版主 发帖 5,017 积分 9,023 | |
|
我说的是“用if命令判断参数%1、%2等,再跳转到指定标签。”!
|
|
| 第5楼 523066680 | 发表于 2010-02-24 21:27 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
好像刚好 / 可以在变量名里面耶~ 试了一下
@echo off setlocal enabledelayedexpansion set cmd1_/d=rd xxx set cmd1_/m=md xxx if defined cmd1_%1 (!cmd1_%1!) else (echo 没有这个参数或者输入不正确) [ Last edited by 523066680 on 2010-2-24 at 21:29 ] |
|
| 第6楼 mountvol | 发表于 2010-02-25 10:22 |
| 初级用户 发帖 117 积分 186 | |
|
goto %1
:n md "%2" :d rd "%2" 看起来少了goto :eof 至于参数的格式,这个要自己处理字符串。 |
|
| 第7楼 doslike | 发表于 2010-02-25 16:39 |
| 版主 发帖 285 积分 326 来自 黑龙江省 | |
|
[b]标签里能不能加入/呀[b/]
|
|
| 第8楼 HAT | 发表于 2010-02-25 19:52 |
| 版主 发帖 5,017 积分 9,023 | |
| 第9楼 Hanyeguxing | 发表于 2010-02-27 14:36 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
@echo off&setlocal enabledelayedexpansion
title 本批处理仅用于演示 ::传递参数必须使用空格加以分隔 set "Han0= 0 /0 -0 ? /? -h /h -help /help / " set "Han1= 1 /1 -1 c -c /c -copy /copy " set "Han2= 2 /2 -2 r -r /r -run /run " set "Han3= 3 /3 -3 k -k /k -key /key " set "Han4= 4 /4 -4 d -d /d -del /del " set "Han5= 5 /5 -5 a -a /a -about /about " set "Han6= 6 /6 -6 l -l /l -all /all " set "Han7= 7 /7 -7 e -e /e err /err " set Ye1=Han0 Han1 Han2 Han3 Han4 Han5 Han6 Han7 if ""=="%~1" goto :Gu2 :Gu1:参数判断 if ""=="%~1" goto :Gu5 set Xing=Gu4 for %%i in (!Ye1!) do if /i "!%%i: %~1 =!" neq "!%%i!" set Xing=%%i call :%Xing% %1 shift goto :Gu1 :Gu2:启动检测 if "%cmdcmdline:~1,5%" == "md /c" (goto :Han6) else goto :Gu3 :Gu3:菜单选择 cls echo 0:帮助 echo 1:功能1 echo 2:功能2 echo 3:功能3 echo 4:功能4 echo 5:版权 echo 6:全部执行功能1-4 echo 7:退出代码查询 echo 请键入相应数字以选择不同的功能: set /p ye2= for /l %%i in (0 1 7) do if "%ye2%" == "%%i" call :Han%%i echo 您键入有错误,请按任意键重新开始选择... pause>nul goto :Gu3 :Gu4:错误 echo 没有 "%1" 这个参数! goto :eof :Gu5:完成 echo 操作已完成! goto :eof :Han0:帮助 echo 帮助信息 goto :eof :Han1:功能1 echo 功能1执行已完成 goto :eof :Han2:功能2 echo 功能2执行已完成 goto :eof :Han3:功能3 echo 功能3执行已完成 goto :eof :Han4:功能4 echo 功能1执行已完成 goto :eof :Han5:版权 echo 寒夜孤星制作 goto :eof :Han6:执行全部功能 for /l %%i in (1 1 4) do call :Han%%i goto :eof :Han7:退出代码组解释 cls echo 0:全部 echo 1:代码1 echo 2:代码2 echo 3:代码3 echo 4:代码4 echo 请键入相应数字以选择不同的功能: set /p ye3= for /l %%i in (0 1 4) do if "%ye3%" == "%%i" call :eli%%i echo 您键入有错误,请按任意键重新开始选择... pause>nul goto :Han7 :eli0:全部 for /l %%i in (1 1 4) do call :Eli%%i goto :eof :eli1:原因1 echo 原因1 goto :eof :eli2:原因2 echo 原因2 goto :eof :eli3:原因3 echo 原因3 goto :eof :eli4:原因4 echo 原因4 goto :eof ::退出代码组,用以返回 %errorlevel% :err1:错误1 exit /b 1 :err2:错误2 exit /b 2 :err3:错误3 exit /b 3 :err4:错误4 exit /b 4 N久前,自己脑子一进水时写的。。。 双击批处理文件时,批处理执行内部N个(例如4个)功能。 双击批处理文件运行完成后,批处理窗口自动关闭。 在 CMD 控制台直接执行(不含参数)此批处理时,批处理显示选择菜单。 在 CMD 控制台执行此批处理后,CMD 控制台不关闭,并等待下一命令。 在 CMD 控制台对此批处理带参数执行,每个参数对应不同内部功能。 在 CMD 控制台对此批处理带参数执行,参数 Help 显示帮助信息。 在 CMD 控制台对此批处理带参数执行,参数 All 执行内部N个(例如4个)功能。 在 CMD 控制台对此批处理带参数执行,参数 About 显示版权及版本信息。 参数要求忽略大小写,参数可以是单独字符,也可以是单词,前面可以是-或/。 当参数错误时,返回错误信息:“没有 -X 这个参数!”。 批处理每次运行完成,都显示返回标准信息:“操作已完成!”。 设置批处理退出代码组 1-4 。 批处理退出代码组 1-4 可查询,并列出退出原因。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |