Итак, у меня есть 2 файла Bat A и B. A запускается, теперь я использую команду для запуска B. Теперь A и B работают одновременно. И теперь я хочу отправить мою переменную C из A в B. Я попробовал Call, но потом он просто дважды открывает B. Спасибо за будущие ответы! Редактировать * без дополнительных файлов
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%
Если вы не используете командную строку 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"
Тем не менее, вы не можете использовать те же специальные символы, например, точку.