Просмотр файла 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
и затем завершите (переходя к концу файла) - Выберите правильное
.exe
на основе архитектуры системы (технически архитектура процесса, которая вызывает эту функцию: Возможные значения% PROCESSOR_ARCHITECTURE% ) - * "Определение"
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