#batch-file
#пакетный файл
Вопрос:
Итак, я пытаюсь создать скрипт, который, если пользователь вводит «listproc 100», отображает список задач и фильтрует значение PID, если оно больше или равно 100, и если пользователь вводит 2 ввода, например, «listproc 100 500», он будет выполнять список задач из значений PID, которые больше или равныдо 100, а также меньше или равно 500.Однако я использую goto, есть ли способ, которым я могу это сделать, не спрашивая пользователя, ввели ли они 1 или 2 входных данных, и иметь возможность заставить скрипт работать самостоятельно.Итак, для exmaple, если бы я ввел «listproc 100 500», он показал бы результат, и мне не нужно было спрашивать, ввел ли я 1 или 2 ввода.
@echo off
set /p "input=1 or 2 inputs"
REM asks user how many inputs they entered
if "%input%" == "1" (
goto one
)
if "%input%" == "2" (
goto two
)
REM filters depending on number of inputs
:one
tasklist /FI "PID ge %1"
:two
tasklist /FI "PID ge %1" /FI "PID le %2"
Комментарии:
1. Вы переходите в цикл пользовательских запросов, где вводите их по одному входу за раз, подсчитываете время в цикле, пока они не введут quit или q или что-то в этом роде. Другой вариант — получить их все в одной строке, а затем обработать ее в цикле. Видишь
help for
.2. «listproc 100 500» предполагает, что вы не хотите просить пользователя интерактивно вводить значения, а вызываете свой скрипт с параметрами. Смотрите
call /?
, как с этим справиться.
Ответ №1:
@echo off
setlocal
set "part2=%2"
set "part1=%1"
if defined part1 (
if defined part2 (
tasklist /FI "PID ge %1" /FI "PID le %2"
) else (
tasklist /FI "PID ge %1"
)
) else ECHO Need at least one argument
pause
Предполагая, что вы хотите выполнить thisbatch 1234 5678
where 5678
необязательно.
Можно было бы опустить присвоения part?
и заменить if defined part?
на if "%?" neq ""
(где ?
есть 1
или 2
)
Это предполагает, что вы можете доверять своим пользователям, и они будут входить в соответствии с ожиданиями (т.е. нет thisbatch crash me
) — GIGO.
Или вы хотите запустить это полностью интерактивно?