对于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变量用于保存扩展名.c2.定义sum变量用于计数,/a不能省略,表示sum是数值类型变量
3.for 循环用于处理当前目录下每一个文件“*”代表当前目录下的所有文件,“%%m”代表具体的某一一个文件,每次循环时“%%m”所代表的文件都不一样。 for循环的次数取决于当前文件夹下文件的总数。4.利用“ren"命令修改文件名。对于新文名“%%m%extension%",“%%m”表示文件名,“%extension%"表示扩展名“.c”。5.最后两行,删除变量**6.注意选择的文件名不能带有空格。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)