Как вызвать дочерний пакетный файл с аргументами из родительского пакетного файла? - PullRequest
2 голосов
/ 21 февраля 2020

У меня есть два пакетных файла PARENT.bat и CHILD.bat

Сценарий файла PARENT равен

CALL CHILD.bat -username siva -password test1234

Задача файла CHILD - запустить автоматизацию. Нам нужно передать аргументы для CHILD.bat. Например, если мы выполняем только CHILD.bat, нам нужно вызвать как

CHILD.bat -username siva -password tet1234

, но я хочу передать значения имени пользователя и пароля из файла PARENT.bat в CHILD.bat пакетный процесс и CHILD.bat процесс начнется.

Может кто-нибудь помочь с решением для этого?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

При вызове пакетного файла:

Если значения, которые вы передаете, являются stati c, в родительском:

call "%batchfilepath%" username fred password 12za34xs

(Stati c пароли, хранящиеся в пакете файлы ни в коем случае не являются безопасными.)

Если передаваемые вами значения являются динамическими c (уже хранятся в переменных), в родительском:

call "%batchfilepath%" username "%userVar%" password "%passVar%"

In ребенок, есть строка для извлечения и присвоения этих значений:

Set "%~1=%~2" & Set "%~3=%~4"

0 голосов
/ 21 февраля 2020

Я знаю, что большинство не согласится со мной, но я склонен решать подобные проблемы с файлами.

Вы создаете два текстовых файла, username.txt и password.txt, и позволяете родителю напишите им, и ребенок прочитает из них, затем удалите файлы, когда закончите.

Это будет выглядеть примерно так:

РОДИТЕЛЬ

echo siva > username.txt
echo test1234 > password.txt
start child.bat

РЕБЕНОК

for /f "tokens=* delims=" %%x in (username.txt) DO set username=%%x
for /f "tokens=* delims=" %%x in (password.txt) DO set password=%%x
del username.txt
del password.txt

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

Надеюсь, это помогло.

...