4

我正在尝试制作一个简单的脚本来设置我的 gcc 变量。作为 .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>
4

3 回答 3

5

PowerShell 是与 Windows 命令行 (cmd.exe) 分开的执行环境

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

例子:

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

Microsoft TechNet 上提供了更多信息

于 2012-10-01T01:28:23.040 回答
1

通常,将批处理内容留给 .BAT 文件并将 PowerShell 内容放入 .ps1 文件。

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

如果您想在路径中添加内容,那么为什么不将语句放在 .ps1 脚本文件中呢?

于 2012-10-01T10:07:05.120 回答
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" 
于 2012-10-01T10:25:41.367 回答