2016-02-05 106 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