Запустите Clink в Windows Terminal Preview - PullRequest
2 голосов
/ 29 января 2020

Есть ли возможность запустить 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%"

1 Ответ

0 голосов
/ 09 мая 2020

Просмотр файла 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_DIR, если вызов выполняется в форме clink.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 со своими собственными аргументами командной строки. %~dpnx0: d rive, p ath, n ame, e x напряженности, 0 th аргумент (см. синтаксические аргументы ) и %clink_profile_arg% переменную, определенную ранее.

Просмотр start:

Запускает отдельное окно командной строки для запуска указанной программы или команды.

Выделение полужирный - мое собственное, но теперь мы сразу понимаем, почему Вы наблюдали поведение, которое описали.

У нас есть несколько вариантов для рассмотрения сейчас.

Вариант 1 - Новый clink_terminal.bat на основе clink.bat

Хотя мы могли бы редактировать clink.bat лучшим вариантом было бы сделать отдельный файл, который мы используем только для терминала.

Мы можем просто изменить :launch на:

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

и затем использовать ваш commandline: с clink_terminal.bat вместо.

Вариант 2 - напрямую использовать clink с его аргументами командной строки

Надеюсь, что через вы убедились, что вы можете эффективно заменить вызов .bat и просто ll 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
...