【发布时间】:2016-06-19 18:22:22
【问题描述】:
所以我有一个带有这个“代码”的 cmds.bat 文件。它只是一个简单的工具,要求我执行最常用的命令行命令:
@echo off
:Ask
echo What command should I excute?
echo 1) ncu -g
echo 2) gem outdated
echo 3) gem update
echo 4) pip list --outdated
echo 5) pip upgrade all packages!
set INPUT=
set /P INPUT=Type input: %=%
If "%INPUT%"=="1" goto cmd1
If "%INPUT%"=="2" goto cmd2
If "%INPUT%"=="3" goto cmd3
If "%INPUT%"=="4" goto cmd4
If "%INPUT%"=="5" goto cmd5
:cmd1
ncu -g
:end
:cmd2
gem outdated
:end
:cmd3
gem update
:end
:cmd4
pip list --outdated
:end
:cmd5
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
:end
:quit
每当我按 4 时,它都会执行第 4 和第 5 个命令,而不仅仅是第 4 个。我做错了什么?
【问题讨论】:
-
:end不做任何事情,你应该用goto :quit或goto :eof替换它 -
您还应该考虑用户输入除
1之外的其他内容到5的情况,例如,将goto :quit放在if查询之后... -
因为每个选项只执行一个命令,我建议使用
If "%INPUT%"=="1" ncu.exe -g & goto :EOF和If "%INPUT%"=="2" gem.exe outdated & goto :EOF等等。这使得批处理代码更加紧凑。有关&操作数的详细信息,请参阅Single line with multiple commands using Windows batch file 上的答案。 -
@DennisvanGils 将您的评论转换为答案以解决此帖子。
-
@Mofi 它可能更紧凑,但不太清晰。
标签: batch-file command-line command