2017-08-08 21 views
2

私はバッチスクリプトとB2.batを内部的に呼び出しているpowershellスクリプトP.ps1を持っています。次のように実行時にPowershellからバッチファイルに値を渡す

P.ps1コードは次のとおり

B1.bat 
$a= Read-host "Choose 1 or 2:" 
B2.bat 
Write-host "End of code" 

B1.batコードは次のとおり

echo "Hello World" 

B2.batはPowerShellのscript.i.eからの入力を必要とします。 $aは、あなたがこのようにPowerShellスクリプトで変数を使用することになりB2.bat

@ECHO OFF 
SET var = a 
rem This "a" is coming from "P.ps1" 
ECHO We're working with %var% 

答えて

1

に送信することがあります。

B1.bat 
$a= Read-host "Choose 1 or 2:" 
B2.bat $a 
Write-host "End of code" 

そして、バッチスクリプトでこれを行うだろう:

@ECHO OFF 
SET a=%1 
rem This "a" is coming from "P.ps1" 
ECHO We're working with %a% 

あなたはコマンドラインで渡された最初の変数を参照するには%1を使用し、2番目には%2を、3番目には%3を使用します。

+0

$Env:Var=$aを使用することができP.ps1から環境を継承します。スペースは変数名と内容の一部になります。 – LotPings

+0

ありがとう!私は編集します。 –

0
B1.bat以来

B2.batは、あなたは、単にsetコマンドで等号の前後にスペースを入れないでくださいバッチでP.ps1

PS> gc .\B1.bat 
@Echo "Hello World" 

PS> gc .\B2.bat 
@ECHO OFF 
ECHO We're working with %var% 

PS> gc .\p.ps1 
.\B1.bat 
$a = Read-host "Choose 1 or 2 " 
$Env:var=$a 
.\B2.bat 
Write-host "End of code" 

PS> .\p.ps1 
"Hello World" 
Choose 1 or 2 : 1 
We're working with 1 
End of code 
関連する問題