【问题标题】:How to make a batch file run in vscode terminal如何使批处理文件在 vscode 终端中运行
【发布时间】:2020-03-27 18:52:40
【问题描述】:

我正在尝试制作一个在 vscode 中打开虚拟环境的批处理文件。到目前为止,代码如下所示:

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

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

编辑:我知道这可能不是编写程序的最佳方式,但我是批处理新手,它可以工作,所以我现在很满意。

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

【问题讨论】:

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


    【解决方案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'
    }
    

    【讨论】:

    • 这行得通,只留下一个我解决的问题。对于那些想知道如何在 vscode 编辑器中运行 powershell 程序的人,请将 ./ 添加到文件中。例如 "./test" 如果文件名为 test.ps1 非常感谢您的帮助
    猜你喜欢
    • 2019-10-05
    • 2017-09-07
    • 1970-01-01
    • 2021-06-09
    • 2019-06-01
    • 2015-10-27
    • 2013-11-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多