📄 [原创]批处理参数问题一点谈 - dos批处理 & 脚本技术(批处理室) - 中国dos联盟论坛 - 中国dos联盟之联合dos论坛.htm
字号:
(WIN+R)☆</B><BR>%ComSpec%
/cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p=
%,:~%i,1%<nul&ping/n 1
127.1>nul<BR><BR></TD></TR></TBODY></TABLE></TD></TR>
<TR bgColor=#f8f9fc>
<TD class=smalltxt vAlign=center><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/lastpost.gif"
align=absMiddle> 2005-11-25 11:42 PM</TD>
<TD vAlign=center>
<TABLE cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR class=smalltxt>
<TD align=left><A
href="http://www.cn-dos.net/forum/viewpro.php?uid=40733&sid=Z83cGB"><IMG
alt=查看资料
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/profile.gif"
border=0></A> <A
href="mailto:dlm-lx@163.com"><IMG alt=发送邮件
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/email.gif"
border=0></A> <A
href="http://www.cn-dos.net/forum/pm.php?action=send&uid=40733&sid=Z83cGB"
target=_blank><IMG alt=发短消息
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/pm.gif"
border=0></A> <A
href="http://www.cn-dos.net/forum/blog.php?uid=40733&sid=Z83cGB"><IMG
alt=网志
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/blog.gif"
border=0></A> <A
href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=105400208"
target=_blank><IMG alt=QQ
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/oicq.gif"
border=0></A> </TD>
<TD align=right> <A
href="http://www.cn-dos.net/forum/post.php?action=edit&fid=23&tid=17785&pid=105812&page=1&sid=Z83cGB"><IMG
alt=编辑帖子
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/edit.gif"
border=0></A> <A
href="http://www.cn-dos.net/forum/post.php?action=reply&fid=23&tid=17785&sid=Z83cGB"><IMG
alt=回复
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/replyb.gif"
border=0></A> <A
href="http://www.cn-dos.net/forum/post.php?action=reply&fid=23&tid=17785&repquote=105812&sid=Z83cGB"><IMG
alt=引用回复
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/quote.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD bgColor=#f8f9fc colSpan=2 height=1></TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=top width="21%"><A name=pid105874></A><SPAN
class=bold>willsort</SPAN><BR><SPAN
class=smalltxt><B><FONT color=red>荣誉版主</FONT></B>
<BR><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><IMG
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/star.gif"><BR>Batchinger<BR><BR>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0
cellPadding=0 width="95%" border=0>
<TBODY>
<TR>
<TD align=middle><IMG height=58
src="[原创]批处理参数问题一点谈 - DOS批处理 & 脚本技术(批处理室) - 中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛.files/19.gif"
width=62 border=0></TD></TR></TBODY></TABLE><BR>积分
4310<BR>发帖 1515<BR>注册 2002-10-18<BR>状态 离线 </SPAN></TD>
<TD vAlign=top width="79%" height="100%">
<TABLE
style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
height="100%" cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top><SPAN class=smalltxt>『第<FONT
color=red><B> 4</B></FONT> 楼』: </SPAN><SPAN
class=bold> </SPAN><BR><BR>Re 无奈何:<BR><BR>
知音难觅,古之良训,兄因此感怀可见也是性情中人。<BR><BR>
以下是我的代码,主要针对于 MSDOS/Win9x 环境,在
NT’s 应该也没有什么大问题,当然未经过严格测试,我不能做保证的。<BR><BR>
代码中没有做参数有效性的验证,也没有实现遇到重复开关的验证,不过在实际应用中,可以根据各类型参数的实际情况,比较简单地插入验证代码到相应的模块中。<BR><BR>
兄的代码中,有以下几点疑问:<BR><BR>
1、 set "_temp=%~1"
,我猜测将参数保存至变量的目的在于,剔除参数中的双引号,这是 %~1
的作用,但是我不明白为何将将变量名加参数都用引号括起。<BR><BR>
2、变量 m
n,我猜测它们的作用是标示参数的奇偶性,即表明参数是开关还是变量值,但是否可用一个变量的真假来标示?我的方案中因为是用双shift避免了开关和变量值的选择的,这样可能会引起
prog /i /o 这样的识别问题,但是如果在 SwitchI
中加入有效性验证,那么也可以避免。<BR><BR>
3、set /a I=1,F=0,V=0,L=0,O=0,n=1 ,这样的设置会如何识别
prog /i input /o output /i input2 ?
<BLOCKQUOTE class=code><B
class=smalltxt>CODE:</B> <A
class=smalltxt
onclick="copycode(findobj('code2'));"
href="http://www.cn-dos.net/forum/viewthread.php?tid=17785###">[Copy
to clipboard]</A>
<HR color=#dde3ec SIZE=1>
<DIV id=code2
style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; FONT-FAMILY: Courier New">::
ArgParse.bat - Parser of command line
arguments<BR>:: Will Sort - 2005-11-26 -
WinXP_CMD/MSDOS7.10/MSDOS6.22<BR>@echo
off<BR><BR>:Init<BR>for %%e in (directory_i
directory_o filter_f filter_v log) do set
%%e=<BR><BR>:ParseLoop<BR>if "%1"=="" goto
Start<BR>for %%s in (i I f F v V l L o O) do if
"%1"=="/%%s" goto Switch%%s<BR>echo Error:
Invalid switch '%1'!<BR>goto
Quit<BR><BR>:SwitchI<BR>if "%directory_i%"==""
set directory_i=%2<BR>goto
NextArg<BR><BR>:SwitchO<BR>if
"%directory_o%"=="" set directory_o=%2<BR>goto
NextArg<BR><BR>:SwitchF<BR>if "%filter_f%"==""
set filter_f=%2<BR>goto
NextArg<BR><BR>:SwitchV<BR>if "%filter_v%"==""
set filter_v=%2<BR>goto
NextArg<BR><BR>:SwitchL<BR>if "%log%"=="" set
log=%2<BR>goto
NextArg<BR><BR>:NextArg<BR>shift<BR>shift<BR>goto
ParseLoop<BR><BR>:Start<BR>echo.directory_i
%directory_i%<BR>echo.directory_o
%directory_o%<BR>echo.filter_f
%filter_f%<BR>echo.filter_v
%filter_v%<BR>echo.log
%log%<BR><BR>:Quit<BR>for
%%e in (directory_i directory_o filter_f
filter_v log) do set
%%e=<BR><BR>:end</DIV></BLOCKQUOTE>[<I> Last
edited by willsort on 2005-11-26 at 19:35 </I>]
<BR><BR><BR></TD></TR>
<TR>
<TD vAl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -