batch-file - 如何让菜单定义一个变量
问题描述
我是批处理脚本新手。我可以根据自己的需要启动基本菜单,但我需要在菜单和变量的正确方向上稍加推动。
所以我希望创建一个菜单,它在选择一个时定义一个变量,从多个项目中定义文件操作开始的项目的路径。
所以这是一个我想弄清楚如何整合的例子:
CHOICE /N /C:1234 /M "Option: "
IF ERRORLEVEL ==4 SET foo
IF ERRORLEVEL ==3 SET bar
IF ERRORLEVEL ==2 SET quak
IF ERRORLEVEL ==1 SET baz
[something something define %bark% from above]
rem overwrite file.png with new option
copy %src%\%bark%\file.png %des%\%quak%\file.png
现在我知道我在这里遗漏了一些东西。如果我说得不够清楚,那我就是个白痴。如何制作一个批处理菜单,该菜单设置一个变量来多次执行相同的操作,而不会使用每个操作的唯一操作来膨胀我的代码?
解决方案
您可以通过两种不同的方式来做到这一点:第一种是完全删除显示的位置,因为这是使用命令==
时最常见的方式:choice
choice /N /C:1234 /M "Option: "
if errorlevel 4 set foo & goto :foo
if errorlevel 3 set bar & goto :bar
if errorlevel 2 set quak & goto :quak
if errorlevel 1 set baz & goto :baz
[something something define %bark% from above]
rem overwrite file.png with new option
copy %src%\%bark%\file.png %des%\%quak%\file.png
降序只是因为if errorlevel x
意味着errorlevel
变量是否大于或等于。x
第二种不太常见的方式,用于在条件为真时设置变量,具体做法如下(注意这里我们不介意顺序):
choice /N /C:1234 /M "Option: "
if %errorlevel% EQU 4 set foo & goto :foo
if %errorlevel% EQU 3 set bar & goto :bar
if %errorlevel% EQU 2 set quak & goto :quak
if %errorlevel% EQU 1 set baz & goto :baz
[something something define %bark% from above]
rem overwrite file.png with new option
copy %src%\%bark%\file.png %des%\%quak%\file.png
你可以在这里替换EQU
,==
虽然不推荐。
请注意,如果要在条件为真的情况下设置变量,请使用第二种方式并以格式设置变量set "var=value"
。
例如:
if %errorlevel% EQU 4 set "foo=1"
if %errorlevel% EQU 3 set "bar=2"
if %errorlevel% EQU 2 set "quak=3"
if %errorlevel% EQU 1 set "baz=4"
管他呢。
由于不执行所有 4 if
s,您可以在GoTo
此处添加:
if %errorlevel% EQU 4 set "foo=1" & goto :foo
if %errorlevel% EQU 3 set "bar=2" & goto :bar
if %errorlevel% EQU 2 set "quak=3" & goto :quak
if %errorlevel% EQU 1 set "baz=4" & goto :baz
并用实际名称替换示例子例程。
有关使用的命令的更多信息,请输入cmd.exe
:
if /?
choice /?
set /?
goto /?
推荐阅读
- python - 如何在 Python 中连接到 FTP 服务器?
- html - 制作表格单元格(不是 3x3、2x4!)正方形?
- c# - 说出语音命令时保持玩家移动
- vue.js - vuetify断点未定义,TypeError:无法读取未定义的属性“xsOnly”
- javascript - React 检测到 Hooks 的调用顺序发生了变化,但我看不到任何有条件调用的 hooks
- python - 在块样式 yaml 文件 (ruamel.yaml) 中将来自 Python 的列表显示为流样式
- c# - 如何避免 MailKit 更改 text/plain 和 text/html 部分的传输编码?
- c++ - 从存储的类引用中调用方法
- hibernate - 使用继承重构 Grails 域类
- python - 用于正确并排放置按钮的 tkinter 布局设置的说明