批处理命令不会停止
Batch command doesn't stop
所以我有一个 cmds.bat 文件,其中有这个 "code"。它只是一个简单的工具,要求我执行最常用的命令行命令:
@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
,这不是命令,而是标签,并且什么都不做。我建议使用
@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
的实际标签,而只会转到文件末尾(这也是为什么您不应该使用名为 [=13= 的标签的原因) ])
如果这不是您的全部代码并且您还需要在批处理文件中执行其他操作,您可以使用 :quit
标签并将 goto :eof
替换为 goto :quit
所以我有一个 cmds.bat 文件,其中有这个 "code"。它只是一个简单的工具,要求我执行最常用的命令行命令:
@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
,这不是命令,而是标签,并且什么都不做。我建议使用
@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
的实际标签,而只会转到文件末尾(这也是为什么您不应该使用名为 [=13= 的标签的原因) ])
如果这不是您的全部代码并且您还需要在批处理文件中执行其他操作,您可以使用 :quit
标签并将 goto :eof
替换为 goto :quit