Как запустить команды с автоответом на приглашение в пакетном скрипте - PullRequest
2 голосов
/ 23 декабря 2019

Я пытаюсь сделать следующее:

start /wait /B "C:\Users\Kiriti_Komaragiri\Desktop\sample" npm i
echo Y
start /wait /B "C:\Users\Kiriti_Komaragiri\Desktop\sample2" npm i

Я хотел бы запустить вышеупомянутое в том же окне с автоматическим ответом "Y"

В настоящее время выполняется только первая команда ине третий. Я не уверен, почему?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2019

Вот, пожалуйста.

echo Y | start /wait /B "C:\Users\Kiriti_Komaragiri\Desktop\sample" npm i
echo Y | start /wait /B "C:\Users\Kiriti_Komaragiri\Desktop\sample2" npm i
0 голосов
/ 23 декабря 2019

Больше информации, пожалуйста. На какой тип команды вы пытаетесь дать ответ? Это Choice, Set / p или что-то еще, на что вы пытаетесь дать ответ?

Не зная больше, единственное, что я могу сделать, - это наличие метки перед обработкой ввода во вторичном пакете. .

Существует обходной путь, при котором вы можете позвонить и получить метку в другой партии, вызвав метку с тем же именем в вашей вызывающей партии. Это позволяет вам определить значение ввода (какую бы форму он ни принял) в вашем основном пакете, а затем сделать следующее (подставляя соответственно имена меток, имен переменных и путей к файлам)

-В вызове (Первичный) Пакет:

Set ResponseVarName=Y

Call :targetLabel

(whatever code your batch has in between)

REM this is where you make your hack 'Call' to the other batch, without actually 'Calling' the batch itself.

:targetLabel
%userprofile%\desktop\yourotherbatch.bat
exit /b

Просто чтобы быть абсолютно ясным, этот обходной путь полностью зависит от отправки на определенную метку после установки ответа, ДО выполнения других команд.

(EDIT-) Несколько примеров программ, демонстрирующих концепцию:

:::::::::  %userprofile%\desktop\HomeBatch.bat  ::::::::::::::::

@ECHO OFF

:main

Set TestEnvironment=1

Call :targetLabel

:nottarget
ECHO NOT target
pause
exit

:targetLabel
%userprofile%\desktop\OtherBatch.bat npm i

:homeBatch
ECHO returned Home
pause
GOTO main

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:::::::::  %userprofile%\desktop\OtherBatch.bat  ::::::::::::::::

@ECHO OFF

:NottheTarget
ECHO NOT THE TARGET
pause
exit

:targetLabel
ECHO Found the Target. TestEnvironment=%TestEnvironment% %~1 %~2
pause
Exit /b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...