- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cn-DOS技术文档教程学习
for /L 再认识
for 的 begin,step,end 在for内部是无法更改的for无法在其内部更改自己的first,step,end从而动态控制自己的循环进程也就是说,类似这样的句式达不到预期的目的,即使开启延迟扩展
@echo off setlocal enabledelayedexpansionset /a begin=0,step=1,end=163for /l %%i in (!begin! !step! !end!) do (? ? echo.Current:i=%%i, begin=!begin!, step=!step!, end=!end!? ? set /a end-=step)
=for /l %a in (1,1,9+1) do @echo %a
结果是1……9,而并非1……10(9+1)。这里的+只是一个“分隔符”,- 号亦是如此。
for /l %a in (1,1,9-3) do @echo %a
结果也是1……9,而并非1……6(9-3)。
for /l %a in (1,1,9+1,1,2,3,4,5,) do @echo %a
结果仍然是1……9。
R $for /l %a in (1,1,9+1,1,2,3,4,5,) do @echo %a
或for /l %a in (1*3,1+2,9+3) do @echo %a123456789
Set 命令
用set时最好养成加引号的习惯set others=y=2007m=05d=11m=26rticle=测试echo %others%;要设置名为 TEST^1 的环境变量,请键入:set testVar=test^^1要设置名为 TEST1 的环境变量,请键入:set testVar=test^1Set 将变量值设置成等号 (=) 后的内容。如果键入:set testVar=test^1将得到如下结果: testVar=test^1Set中的set %PATH:*str1=str2%
@echo off
set str=123*456
set str=%str:*3=%
echo %str%
pause
::str1 可以以星号打头;在这种情况下,str1 会从扩展结果的
::开始到 str1 剩余部分(本例中是3)第一次出现的地方,都一直保持相配。
::*3表示str1中第一个3及其3之前的所有字符 =123
set防止变量输入为空:
@echo off:loopset /P name=请输入计算机名称:if not defined name (goto loop)
@echo off:stecho 请选择set /p aa=if [%aa%]==[] goto stif /i [%aa%]==[n] goto andexit:andexit
建议if [%aa%]==[] goto st (这一句等同于 if %a%== goto st)这一句写成if not defined aa goto st否则的话极易让人理解为直接回车的话%aa%是空[格];实际上直接回车是指不定义aa关于环境变量延迟扩展,使用set /?可以查看到部分说明,不过考虑到其粗劣的翻译水平,建议在查看之前,首先chcp 437切换为英文查看原英文说明。鉴于文中已说得十分详尽,而且有数个代码示例,应该不难理解。在此仅略作一些补充。? ?? ?在许多可见的官方文档中,均将使用一对百分号闭合环境变量以完成对其值的替换行为称之为“扩展(expansion)”,这其实是一个第一方的概念,是从命令解释器的角度进行称谓的,而从我们使用者的角度来看,则可以将它看作是引用(Reference)、调用(Call)或者获取(Get)。? ?? ?而命令解释器是扩展环境变量的行为大致如下:首先读取命令行的一条完整语句,在进行一些先期的预处理之后,命令被解释执行之前,会对其中用百分号闭合的字符串进行匹配,如果在环境空间中找到了与字符串相匹配的环境变量,则用其值替换掉原字符串及百分号本身,如果未得到匹配,则用一个空串替换,这个过程就是环境变量的“扩展”,它仍然属于命令行的预处理范畴。? ?? ?而一条“完整的语句”,在NT的命令解释器CMD中被解释为“for if else”等含有语句块的语句和用“ | ||”等连接起来的复合语句。? ?? ?因此,当CMD读取for语句时,其后用一对圆扩号闭合的所有语句将一同读取,并完成必要的预处理工作,这其中就包括环境变量的扩展,所以在for中的所有语句执行之前,所有的环境变量都已经被替换
文档评论(0)