所以我有一个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个命令。我做错了什么?
答案 0 :(得分:2)
您在代码中使用:end
,这不是命令,而是标签,并且什么也不做。我建议使用
@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
goto :eof
:cmd2
gem outdated
goto :eof
:cmd3
gem update
goto :eof
:cmd4
pip list --outdated
goto :eof
:cmd5
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
goto :eof
goto :eof
不需要名为:eof
的实际标签,但只会转到文件结尾(这也是您不应该有一个名为{{的标签的原因) 1}})
如果这不是您的整个代码,而您仍需要在批处理文件中执行其他操作,则可以使用:eof
标签并将:quit
替换为goto :eof