如何在batcmd中在一个选项内,再嵌套一个选项

如何在batcmd中在一个选项内,再嵌套一个选项,第1张

对提问标题内容感觉没什么需要解答的,"嵌套"嘛你已经做到了。

对于bat批处理,注意理解每条命令的语法以及它是会顺序执行的就没什么疑问了,剩下的是多练习积累经验体会。

所列代码提两处修改意见

1 if 命令加参数 /i 可以忽略大小写的 见 if/?

2 类似 if "%choose%" neq "A""B""a""b" goto A0 如果你是想判断除了a b之外(包括大小写)执行

goto A0 那么这种写法是不行的一般来说可以串起来写

if /i "%choose%" neq "a" if /i "%choose%" neq "b" goto A0

当然,如果是想排除更多列举内容,这样会使代码显得很“繁杂”,可以利用别的命令手段达到精简代码的目的如:

:begin

echo a ...选项1..

echo b....选项2

echo c... 选项3

echo q ... 退出

set/p choose=请输入选项代码字母:

echo %choose%|findstr /i "[a-cq]">nul&&goto :f%choose%

rem 这里利用顺序执行特点,符合条件的都goto 开了,能执行此处命令的就只有不合条件的了

echo 输入错误,重新输入

ping -n 3 127.1>nul&cls

goto :begin

:fa

rem 选项1命令集.

goto :next

:fb

rem 选项2命令集.

goto :next

.........

:next

pause

我不直接回答你这问题,有个技巧可以较简捷去前置零,比如把当前时间化成秒

set/a "t=(%time:~,2%)*3600+(1%time:~3,2%-100)*60+1%time:~6,2%-100"

对于嵌套,有两形式,一是在 setlocal enabledelayedexpansion 状态(即之前加了这句代码)

用类似:

set U=abcd

set V=2

set var=!U:~%V%,1!

变量var的值是c

另一种是不必加那一长串状态(加了也可以用这种形式),则上例最后一句改成

call set var=%%U:~%v%,1%%

batfor循环嵌套改名方法很简单。1.定义了extension变量用于保存扩展名.c

2.定义sum变量用于计数,/a不能省略,表示sum是数值类型变量

3.for 循环用于处理当前目录下每一个文件“*”代表当前目录下的所有文件,“%%m”代表具体的某一一个文件,每次循环时“%%m”所代表的文件都不一样。 for循环的次数取决于当前文件夹下文件的总数。4.利用“ren"命令修改文件名。对于新文名“%%m%extension%",“%%m”表示文件名,“%extension%"表示扩展名“.c”。5.最后两行,删除变量**6.注意选择的文件名不能带有空格。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8142846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存