中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理参数问题 上一主题 | 下一主题
doslike
版主

系统收藏家


积分 326
发帖 285
注册 2010-2-22
来自 黑龙江省
状态 离线
『楼 主』:  批处理参数问题

我在做批处理的时候遇到了点难题
比如:
goto %1
:n
md "%2"
:d
rd "%2"
执行批处理的时候,需输入easytree n command来实现新建名为“command”的文件夹,需输入easytree d command来删除command的文件夹。

问:如何让批处理像其他程序那样用/n或/d?

2010-2-24 12:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

用if命令判断参数%1、%2等,再跳转到指定标签。



2010-2-24 15:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
doslike
版主

系统收藏家


积分 326
发帖 285
注册 2010-2-22
来自 黑龙江省
状态 离线
『第 3 楼』:  

我说的是在参数前面加/!
如 /e

2010-2-24 16:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

我说的是“用if命令判断参数%1、%2等,再跳转到指定标签。”!



2010-2-24 20:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 5 楼』:  

好像刚好 / 可以在变量名里面耶~ 试了一下


@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 ]



综合型编程论坛

我的作品索引
  
2010-2-24 21:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
mountvol
初级用户





积分 186
发帖 117
注册 2006-8-14
状态 离线
『第 6 楼』:  

goto %1
:n
md "%2"
:d
rd "%2"
看起来少了goto :eof
至于参数的格式,这个要自己处理字符串。

2010-2-25 10:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
doslike
版主

系统收藏家


积分 326
发帖 285
注册 2010-2-22
来自 黑龙江省
状态 离线
『第 7 楼』:  

[b]标签里能不能加入/呀[b/]

2010-2-25 16:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  


if "%1" equ "/n" (
    goto :n
)




2010-2-25 19:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 9 楼』:  

@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 可查询,并列出退出原因。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-2-27 14:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: