1

Итак, у меня есть 2 файла Bat A и B. A запускается, теперь я использую команду для запуска B. Теперь A и B работают одновременно. И теперь я хочу отправить мою переменную C из A в B. Я попробовал Call, но потом он просто дважды открывает B. Спасибо за будущие ответы! Редактировать * без дополнительных файлов

2 ответа2

2

Команда setx записывает переменную в реестр и может использоваться, если вы хотите использовать переменную глобально для всех пакетных файлов.

SETX VAR_C somevalue

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

Пакетный файл A:

SET VAR_C=somevalue
ECHO %VAR_C% >%TMP%\var_c

Пакетный файл B:

SET /P VAR_C=<%TMP%\var_c
ECHO %VAR_C%
0

Если вы не используете командную строку Windows, одновременно запустить a и b невозможно. Даже вызов команды а есть остановки и б бежит завершения вернуться к после команды вызова в истинном DOS.

При запуске в командной строке Windows это два совершенно разных процесса, которые не разделяют память, переменные и т.д.

Работа пакетных файлов заключается в том, что они используют% 1 до% 9

shift позволяет использовать 10 или более значений, сдвигая все на 1 и теряя самое низкое значение.

Поэтому внутри a.bat вызов b.bat "scooby doo" "был" "здесь"

Сейчас внутри б.бат

%1 = "scooby doo"
%2 = "was"
%3 = "here"

альтернатива

Команда SET также существует

set C = "scooby doo"

эхо% с%


Из отдела уродливых, ограниченных и хакерских

mkdir "\share" mkdir "\share\c", а затем в пакетном файле a вы можете создать файл с именем, которым вы хотите поделиться.

примечание: внутри пакетного файла могут потребоваться символы двойного процента.

for  %i in ("c:\x\c\*.*"); do set c="%~ni"

Тем не менее, вы не можете использовать те же специальные символы, например, точку.

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