2016-02-05 26 views
0

由於某些原因,我簡直無法理解解釋此問題的大多數網站。所以我會試着在這裏問,如果我在錯誤的地方,只是在評論中告訴我,我會把它放在另一個論壇並刪除這個問題。設置PowerShell變量的批處理文件

比方說,我有2個文件,Batch.batPowerShell.ps1

Batch.bat:

set A="ThisIsSuchVar!" 

PowerShell.ps1:

$B = "Well, i don't know what to do here" 

我可以做的B變量什麼是一樣的A變量?

切記:我想讓Batch變量轉到PowerShell文件。這是一個單向腳本。我想使用內置的Windows源代碼。請考慮我在編程方面是一個完全新手,不會說英語,所以請儘可能簡單。

+1

你是否正在從Batch.bat打電話給Powershell.ps1? –

+1

您可以批量設置環境變量以供PowerShell讀取,或者(更簡單)配置PowerShell腳本以接受批變量作爲參數。在後者的情況下,你不必擔心清理變量或會話狀態。 – Matt

+0

標題是有點誤導,但這個帖子應該讓你開始:http://stackoverflow.com/questions/932291/calling-powershell-cmdlets-from-windows-batch-file – Matt

回答

4

在批處理文件run.bat,設置環境變量A和運行PowerShell腳本:

set A=8 
PowerShell.exe -File .\script.ps1 
pause 

script.ps1,獲得環境變量A,並將其值賦給B

$B=$Env:A 
echo $B 

當您運行run.bat時,會得到:

C:\Temp\try>set A=8 

C:\Temp\try>PowerShell.exe -File .\script.ps1 
8 

C:\Temp\try>pause 
Press any key to continue . . . 
+3

'$ B = $ Env:A'有什麼問題? – PetSerAl

+0

你說得對。更短:-)修復它,謝謝,人 –

+0

@PetSerAI出於某種原因,我的腳本卡在'暫停'之前。它說'C:\ Temp \ try> PowerShell.exe -File。\ script.ps1 8',然後停下來。你能告訴我爲什麼嗎? – ArsonFG

相關問題