7

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


我尝试在设置中添加此条目:

        {
            "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%"
4

2 回答 2

9

查看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

对此进行了很好的评论,因此我们可以看到以下按时间顺序排列的结构:

  1. 移动到%userprofile%文件夹
  2. 如果调用在表单中,则将设置clink_profile_arg为 的值PROFILE_DIRclink.bat --profile PROFILE_DIR
  3. 如果没有参数跳转到launch代码然后结束(通过跳转到文件末尾)
  4. 根据系统的架构选择正确.exe的(技术上调用此函数的进程架构:%PROCESSOR_ARCHITECTURE% 的可能值
  5. launch定义”(技术上的标签

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

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

所以这会运行start带有一些参数的命令,包括字符串“Clink”以及看起来是cmd.exe带有自己命令行参数的 a。%~dpnx0是:驱动器、路径、名称x张力、0个参数(参见syntax -args)和之前定义的变量。%clink_profile_arg%

看着start

启动单独的命令提示符窗口以运行指定的程序或命令。

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

我们现在有几个选择要考虑。

选项 1 - 新clink_terminal.bat基于clink.bat

虽然我们可以编辑clink.bat更好的选择是制作一个我们仅用于终端的单独文件。

我们可以简单地:launch改为:

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

然后用你的commandline:withclink_terminal.bat代替。

选项 2 - 直接使用clink它的命令行参数

希望通过您已经看到,您可以有效地替换调用 the.bat并简单地clink直接调用它的参数。

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

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

设置 GUID !!!

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

打开 PowerShell 窗口并运行new-guid

PS C:\ANYWHERE> New-Guid

Guid
----
c97d08e9-03fc-491f-bbd7-9a12b9d6e191
于 2020-05-09T16:27:59.120 回答
1

根据 Adehad 的回答,首先生成新的 GUID:打开 PowerShell 窗口并运行New-Guid命令:

PS C:\ANYWHERE> New-Guid
Guid
----
ed8f4d54-a8db-4628-ab4f-317cc6469b07 

然后在 Windows 终端的设置中,选择打开 JSON 文件(左下方菜单的最后一个选项)。它将从 C:\Users\your_user_name\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json 等路径打开文件。找到“配置文件”部分,并在“列表”中添加类似这样的内容(在此处使用您新生成的 GUID):

        {
            "commandline": "cmd.exe /s /k \"C:\\my_programs\\clink_0.4.9\\clink_x64.exe inject --profile PROFILE_DIR\"",
            "guid": "{ed8f4d54-a8db-4628-ab4f-317cc6469b07}",
            "hidden": false,
            "name": "clink"
        }

保存文件,如果有错误,Windows 终端会在 settings.json 文件中显示错误消息和发生错误的位置。通常它与未正确转义的引号或斜杠有关。保存更改,重新启动 Windows 终端,然后在选项中看到新项目clink

于 2022-01-21T02:30:41.753 回答