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

перед вызовом другой программы я повторяю его, чтобы проверить, определено ли оно, и вижу все предложение (первый файл):

set /p input=
echo %input%
call test.bat %input%

но когда я пытаюсь получить его (второй файл):

set output=%1
echo %output%

это показывает только первое слово.

Что мне нужно сделать, чтобы получить целое предложение из одного пакетного файла в другой с помощью команды вызова?

3 ответа3

0

Причина проста.

При работе с пакетным файлом каждый параметр доступен через% 1,% 2,% 3 ... до 9 параметров.

Параметры разделяются пробелом, поэтому, если вы введете больше слов и разделите их пробелом, по сути, они станут несколькими параметрами. Решение простое, однако, поместите% input% в кавычки, чтобы пакетный файл понял, что это должен быть один параметр. Ваш сценарий становится:

set /p input=
echo %input%
call test.bat "%input%"
0

Решение от LPChip звучит хорошо, и если вы хотите удалить цитаты, посмотрите на этот пост:https://stackoverflow.com/a/379779/4828335

0

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

Теперь, во втором пакете, вам нужно только добавить символ ~ к параметру следующим образом:

REM Note the use of ~ after the percentage symbol

set output=%~1
echo %output%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .