Аргумент пакетного файла получает только первый символ - PullRequest
2 голосов
/ 27 апреля 2019

Я пытаюсь передать аргумент в командный файл

Мой файл содержит только следующий код:

set branch=%1
echo %branch%

вызов файла с аргументом Foo

выходы

F

Кажется, я не могу найти, где синтаксис ошибся.

Хотел бы немного помочь


По запросу из комментариев:

Полный, точный скрипт:

ECHO "Starting unit tests in get_unittests_results.bat"
@rem SET sainity_test_dir="C:\code\EPMD\%1\Templates\Testing\Main"
@rem SET testing_dir="C:\code\EPMD\%1\Templates\Testing"
@rem SET report_outcome_dir="%CD%\report_outcome"
@rem SET sainity_file_name="sanity.py"
@rem SET dev_epd_python_path="C:\DEV_EPD_Prerequisite\Anaconda2\python.exe"
@rem cd %sainity_test_dir%
@rem %dev_epd_python_path% %sainity_file_name%


ECHO %1
set branch=%1
ECHO %branch%
ECHO "Starting unit tests in get_unittests_results.bat"
SET dev_epd_python_path="C:\DEV_EPD_Prerequisite\Anaconda2\python.exe"
SET sainity_test_file_path="..\..\EPMD\%1\Templates\Testing\Main\sanity.py"
ECHO %dev_epd_python_path% %sainity_test_file_path%
%dev_epd_python_path% %sainity_test_file_path%

вызывается скриптом Python:

def run_batch(path, params):
    p = Popen(path.format(*params), cwd='.')
    stdout, stderr = p.communicate()
    if stderr is not None:
        print stderr

def create_unity_build(args):
    branch_name = args.branch
    run_batch(build_unity_script_path, [branch_name])

args.branch содержит строку длиной более 1 (проверено).

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

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

В коде Python, если path является строкой пути к пакетному файлу, а params является списком аргументов, то возможно будет использовать:

p = Popen([path] + params)

, который объединяет ( расширяет ) список с другим списком .

Что касается

p = Popen(path.format(*params), cwd='.')

путь должен быть шаблоном для форматирования, который я не знаю, значение и как создается.Кажется странным, так как путь будет такой же, как например, test.cmd {}.Может опустить cmd='.', так как текущий каталог будет по умолчанию.

0 голосов
/ 27 апреля 2019

Поскольку в комментариях недостаточно места для публикации, я бы посоветовал вам сначала настроить , чтобы лучше использовать двойные кавычки:

Rem Echo "Starting unit tests in get_unittests_results.bat"
Rem Set "sainity_test_dir=C:\code\EPMD\%~1\Templates\Testing\Main"
Rem Set "testing_dir=C:\code\EPMD\%~1\Templates\Testing"
Rem Set "report_outcome_dir=%CD%\report_outcome"
Rem Set "sainity_file_name=sanity.py"
Rem Set "dev_epd_python_path=C:\DEV_EPD_Prerequisite\Anaconda2\python.exe"
Rem CD /D "%sainity_test_dir%"
Rem "%dev_epd_python_path%" "%sainity_file_name%"

Echo %1
Set "branch=%~1"
Echo %branch%
Echo "Starting unit tests in get_unittests_results.bat"
Set "dev_epd_python_path=C:\DEV_EPD_Prerequisite\Anaconda2\python.exe"
Set "sainity_test_file_path=..\..\EPMD\%~1\Templates\Testing\Main\sanity.py"
Echo "%dev_epd_python_path%" "%sainity_test_file_path%"
"%dev_epd_python_path%" "%sainity_test_file_path%"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...