Итак, у меня есть файл 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-й команды, а не только четвёртым. Что я делаю не так?
': end' ничего не делать, вы должны заменить его на' goto: quit' или 'goto: eof' –
Вы также должны рассмотреть случай, когда пользователь вводит что-то еще, кроме '1',' 5', помещая 'goto: quit' после запросов' if', например ... – aschipfl
Поскольку каждый параметр выполняет только одну команду, I предложите использовать 'If '% INPUT%" == "1" ncu.exe -g & goto: EOF' и 'If"% INPUT% "==" 2 "gem.exe устаревшее & goto: EOF' и т. д. , Это делает пакетный код более компактным. Подробнее о '&' operand см. Ответ на [Одинарная строка с несколькими командами с использованием пакетного файла Windows] (http://stackoverflow.com/a/25344009/3074564). – Mofi