是否有可能在Clink中运行Windows Terminal Preview

我试图在“设置”中添加此条目:

        {
            "hidden": false,
            "name": "Clink",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "commandline": "\"C:\\Program Files (x86)\\clink\\0.4.9\\clink.bat\" startmenu --profile ~\\clink"
        }

但会在新窗口中打开Clink。

我认为clink.bat必须以某种方式进行修改,因为它使用以下命令启动Clink:
start "Clink" cmd.exe /s /k ""%~dpnx0" inject %clink_profile_arg%"

最佳答案

调查clink.bat文件

让我们看一下clink.bat文件:

:: Copyright (c) 2012 Martin Ridgers
:: License: http://opensource.org/licenses/MIT

@echo off

:: Mimic cmd.exe's behaviour when starting from the start menu.
if /i "%1"=="startmenu" (
    cd /d "%userprofile%"
    shift /1
)

:: Check for the --profile option.
if /i "%1"=="--profile" (
    set clink_profile_arg=--profile "%~2"
    shift /1
    shift /1
)

:: If the .bat is run without any arguments, then start a cmd.exe instance.
if "%1"=="" (
    call :launch
    goto :end
)

:: Pass through to appropriate loader.
if /i "%processor_architecture%"=="x86" (
        "%~dp0\clink_x86.exe" %*
) else if /i "%processor_architecture%"=="amd64" (
    if defined processor_architew6432 (
        "%~dp0\clink_x86.exe" %*
    ) else (
        "%~dp0\clink_x64.exe" %*
    )
)

:end
set clink_profile_arg=
goto :eof

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:launch
start "Clink" cmd.exe /s /k ""%~dpnx0" inject %clink_profile_arg%"
exit /b 0


对此进行了很好的评论,因此我们可以看到以下时间顺序结构:
  • 移至%userprofile%文件夹
  • 如果调用的形式为clink_profile_arg
  • ,则将PROFILE_DIR设置为clink.bat --profile PROFILE_DIR的值
  • 如果没有参数,则跳转到launch代码,然后结束(通过跳转到文件的末尾)
  • 根据系统的体系结构(从技术上讲,是调用此函数的过程体系结构:Possible values of %PROCESSOR_ARCHITECTURE%)选择正确的.exe
  • launch“定义”(技术上的标签)

  • 您已正确识别出launch标记的代码是可以更改的代码,让我们进一步看一下:

    start "Clink" cmd.exe /s /k ""%~dpnx0" inject %clink_profile_arg%"
    

    因此,它将使用一些参数来运行start命令,其中包括字符串“Clink”以及看起来像是带有自己的命令行参数的cmd.exe%~dpnx0是: d rive, p ath, n ame, x 张力, 0 th参数(请参见syntax-args)和变量。

    %clink_profile_arg% :



    粗体是我自己的重点,但是我们现在可以立即看到您为什么观察到您描述的行为。

    现在,我们有几个选项可供考虑。

    选项1-基于start的新clink_terminal.bat
    尽管我们可以编辑clink.bat,更好的选择是制作一个单独的文件,仅用于终端。

    我们可以简单地将clink.bat更改为:

    cmd.exe /s /k ""%~dpnx0" inject %clink_profile_arg%"
    

    然后使用:launchcommandline:代替。

    选项2-直接使用clink_terminal.bat及其命令行参数

    希望通过您已经看到,您可以有效地代替调用clink,而只需直接用其参数调用.bat即可。

    在这里,假设您使用的是x64机器:

    commandline: "cmd.exe /s /k "PATH_TO_CLINK\\clink_x64.exe inject --profile PROFILE_DIR""
    

    设置GUID!

    终端中的所有配置文件都有一个GUID,您可以轻松地自己生成一个。

    打开PowerShell窗口并运行 clink

    PS C:\ANYWHERE> New-Guid
    
    Guid
    ----
    c97d08e9-03fc-491f-bbd7-9a12b9d6e191
    

    关于windows - 在Windows Terminal Preview中运行Clink,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59962564/

    10-13 02:38