A C*_*God 0 windows variables if-statement batch-file
我有这个批处理脚本,有很多"if语句".以下是我的几行内容:
if %c%==PC exit
if %c%==pc exit
if %c%==CMD exit
if %c%==cmd exit
if %c%==MENU exit
if %c%==menu exit
if %c%==KILL exit
if %c%==kill exit
Run Code Online (Sandbox Code Playgroud)
有更多的可能性,如果可能的话,真的可以使用一些简化.那么有什么办法可以简化这个吗?也许是这样的,如果变量c等于其中任何一个退出.或甚至使if语句不明确这是否可能?实际上,任何简化这种方法的方法都很棒,可以大大减少我的批处理脚本的大小.
几个旁注
此代码已经有效,除了缩小它之外不需要编辑.
我知道有发现类似的问题在这里,但我不知道如何将它应用到我的问题.
这是最短的方法:
rem Next line is necessary to nest the value of one variable inside another one
setlocal EnableDelayedExpansion
rem Initialize the list of values enclosed by slash
set "values=/PC/CMD/MENU/KILL/"
if /I "!values:/%c%/=!" neq "%values%" exit
Run Code Online (Sandbox Code Playgroud)
values变量的初始化只需要在开始时进行一次!values:/%c%/=!部分首先替换%c%变量; 然后尝试!values!使用延迟扩展从变量中删除由斜杠包围的这样的值.%values%,则表示/%c%/字符串出现在内部 !values!.在这种情况下,执行exit./I在开关if为大写和小写(以及任何其他字母组合)命令检查%c%.此方法还允许以最简单的方式else在if命令中插入一个部分,因为只有一个部分if.
编辑:正如用户LotPings所示,/I在这种情况下没有必要包括交换机,因为在%var:old=new%替换中,old从%var%值替换字符串不区分大小写.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |