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

时间:2020-03-27 18:52:40

标签: powershell batch-file visual-studio-code terminal

我正试图制作一个批处理文件,以在vscode中打开一个虚拟环境。到目前为止,代码看起来像这样:

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

if语句按预期工作,但之后的命令无效。但是,当我在Windows的默认终端中运行该程序时,它可以按预期工作。

编辑:我知道这可能不是编写程序的最佳方法,但是我是新手,可以批量使用,所以我对此感到满意。

编辑2:让我尝试更好地解释问题所在。我在普通终端上运行该程序时,效果很好。问题是我在vscode中使用了终端。如果我尝试仅在终端中运行普通命令,则说找不到命令(键入文件名)。当我使用代码运行程序扩展程序时,它可以正确运行第一行,但不会激活虚拟环境

1 个答案:

答案 0 :(得分:1)

您正在混合批处理文件和Powershell。那是两件事。批处理文件后缀可以是.bat.cmd。 Powershell文件通常以.ps1结尾。

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

如果您需要运行是Powershell脚本的.ps1文件,则需要在Powershell中运行它,不是一个.bat文件!

要执行脚本,您需要像这样执行脚本:

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

如果在powershell上运行它,则if条件将不再起作用。您需要执行以下操作:

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