如何使批处理文件在 VSCode 终端中运行

4

我想制作一个批处理文件,在VSCode中打开虚拟环境。目前代码看起来像这样:

if NOT exist ./env (
    pip3 install virtualenv 
    virtualenv env
)
.\env\Scripts\activate.ps1

if语句按预期工作,但其后的命令却没有执行。然而,在Windows的默认终端中运行程序时,一切正常。

编辑:我知道这可能不是编写程序的最佳方式,但我刚接触批处理,并且它可以正常工作,所以我暂时满意。

编辑2:让我试着更好地解释一下问题。在普通终端中运行程序时一切正常。问题在于我使用了vscode的终端。如果我尝试在终端中单独运行一个命令(键入文件名),它会显示找不到命令。当我使用Code Runner扩展时,它可以正确运行第一行,但无法激活虚拟环境。

1个回答

4

你混淆了批处理文件和PowerShell。它们是两个不同的东西。批处理文件后缀可以是.bat.cmd。PowerShell文件通常以.ps1结尾。

批处理文件使用C:\WINDOWS\system32\cmd.exe。Powershell使用C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe。正如你所看到的,这些是两个不同的解释器。

如果你需要运行一个.ps1文件,也就是一个PowerShell脚本,你需要在PowerShell中运行它,而不是在.bat文件中!

要执行你的脚本,你需要像这样执行:

& 'C:\env\Scripts\activate.ps1'

如果你在PowerShell中运行它,你的条件语句将不再起作用。你需要做类似于这样的事情:

$PipArgs = @('install', 'virtualenv') 
if(Test-Path -PathType leaf "C:\env"){
    & 'pip3' $PipArgs
    & 'virtualenv' 'env'
}

1
这个方法奏效了,只留下了一个问题,不过我已经解决了。对于那些想知道如何在VSCode编辑器中运行PowerShell程序的人,只需在文件名前加上“./”。例如:“./test”,如果文件名为test.ps1。非常感谢您的帮助。 - Ian Halstead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接