2012-10-01 54 views
4

我想做一个简单的脚本来设置我的gcc变量。作为一个.bat文件。powershell命令不在.bat文件中运行?

变量设置这样

$env:Path += ";C:\Users\Brett\Compilers\MinGW\bin" 

当我输入/粘贴到电源外壳本运行就好了。

但是当我粘贴到一个脚本myscript.bat,并通过PowerShell中运行它,我得到这个错误:

C:\Users\Brett\Compilers>"$env:Path += ";C:\Users\Brett\Compilers\MinGW\bin"" 
The filename, directory name, or volume label syntax is incorrect. 
PS C:\Users\Scruffy\Compilers> 

回答

5

PowerShell是从Windows命令行(cmd.exe的)一个独立的执行环境

如果要从批处理文件运行powershell命令,则需要保存powershell脚本(.ps1)并将其作为命令行参数传递到powershell.exe。

例子:

powershell.exe -noexit c:\scripts\test.ps1 

More Information is available here on Microsoft TechNet

+0

确定,但错误犯规具体涉及的PowerShell。当我在cmd中搓脚本时会出现同样的错误。 另外,PowerShell似乎运行一些批处理文件,它总是有我之前。我只使用它优先于cmd,因为它更易于阅读。如果你想在.bat文件中看到相同的“echo hello”,并通过powershell运行它。工作正常。 基本上我需要做的就是在Power Shell脚本中添加一个条目到路径变量中。或一批。但PowerShell更容易阅读。 –

+0

没关系,我通过在bat文件中保存设置路径=%PATH%;“C:\ Users \ Brett \ Compilers \ MinGW \ bin”并通过powershell运行它。我想这是一个语法错误。 –

+3

PowerShell不理解.bat文件。当你从PowerShell内部运行一个时,它将启动CMD并让它运行.bat。因此,您必须使用与在常规命令提示符下相同的语法。如果您想将PowerShell语法保存到文件并按需运行,则需要将其保存为.ps1文件。 –

1

一般来说,留下一批东西.bat文件,并把PowerShell的东西进入的.ps1文件。

我可以在这里复制你的结果 - 但这些都是可以预料的。 Cmd.exe会看到一个字符串,然后是一个路径,然后会非常困惑,因为该语法不是命令提示符可以处理的语法。所以它给出了这个错误信息。

如果你想添加东西到你的路径,那么为什么不把语句放在.ps1脚本文件中?

0

正如其他人所说的,您需要将代码保存在.ps1文件中而不是.bat中。

这条线(从Setting Windows PowerShell path variable)将这样的伎俩:

$env:Path = $env:Path + ";C:\Users\Brett\Compilers\MinGW\bin" 

或者更短:

$env:Path += ";C:\Users\Brett\Compilers\MinGW\bin"