2014-12-22 3 views
4

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

Batch 1

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

Batch 2

if %variable%==1 goto Example 
goto :EOF 

:Example 
echo YaY 
+0

Вы можете либо передать переменные batch1 в качестве аргументов в пакет b2, либо сохранить переменные во временном файле, если вам нужно одновременно запускать оба сценария. – SomethingDark

+0

Не могли бы вы привести пример и того, и другого? –

+1

Является ли batch2 подпроцессом batch1 или несвязанным процессом? – Magoo

ответ

4

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

Пример

test1.bat
@echo off 
set x=7 
call test2.bat 
set x=3 
call test2.bat 
pause 

test2.bat

echo In test2.bat with x = %x%. 

Выход

... когда test1.bat работает.

In test2.bat with x = 7. 
In test2.bat with x = 3. 
Press any key to continue . . . 
11

Вы можете передать в batch1.bat переменных в качестве аргументов batch2.bat.

arg_batch1.bat

@echo off 
cls 

set file_var1=world 
set file_var2=%computername% 
call arg_batch2.bat %file_var1% %file_var2% 

:: Note that after batch2.bat runs, the flow returns here, but since there's 
:: nothing left to run, the code ends, giving the appearance of ending with 
:: batch2.bat being the end of the code. 

arg_batch2.bat

@echo off 

:: There should really be error checking here to ensure a 
:: valid string is passed, but this is just an example. 
set arg1=%~1 
set arg2=%~2 

echo Hello, %arg1%! My name is %arg2%. 

Если вам необходимо запустить сценарии одновременно, вы можете использовать временный файл.

file_batch1.bat

@echo off 
set var=world 

:: Store the variable name and value in the form var=value 
:: > will overwrite any existing data in args.txt, use >> to add to the end 
echo var1=world>args.txt 
echo var2=%COMPUTERNAME%>>args.txt 

call file_batch2.bat 

file_batch2.bat

@echo off 
cls 

:: Get the variable value from args.txt 
:: Again, there is ideally some error checking here, but this is an example 
:: Set no delimiters so that the entire line is processed at once 
for /f "delims=" %%A in (args.txt) do (
    set %%A 
) 

echo Hello, %var1%! My name is %var2%. 
+0

Это их способ сделать партию 2 скрытой и все еще функцией? –

+0

Nevermind, я понял это –

+1

Спасибо. – NetworkKingPin

0

Вы можете узнать решение от ценам ниже

variable goes here >> "second file goes here.bat" 

Что делает этот код является то, что он пишет переменную les во второй файл, если он существует. Даже если он не существует, он создаст новый файл.

Смежные вопросы