Как запускать пакеты, НЕ используя cmd.exe (например, Cmder.exe?) - PullRequest
1 голос
/ 11 октября 2019

Я недавно установил cmder (или просто 'Commander') портативный консольный эмулятор для Windows, и ему действительно нравятся функциональные возможности, которые он предоставляет. Но как вы можете (если вообще) запускать пакеты через него, как вы можете с помощью командной строки Windows?

Подробности:

Если вы пишете ...

cd C:\test\
REM executeSomething.exe
Pause

... в текстовый файл и сохраните его как файл .bat, который вы можете сделать, можете сделать что угодно, просто дважды щелкнув этот файл. У меня есть рабочий процесс, где я запускаю веб-приложение через командный файл. Иногда это приложение запускается автоматически в Chrome , а иногда - . В этом случае мне придется скопировать и вставить URL-адрес Chrome вручную. И это настоящая боль. С cmder.exe это намного проще, но мне придется вручную переходить к папке и запускать приложение через Commander вручную, без роскоши .bat file.

Функциональность, которую я пытаюсь запуститьавтоматически с помощью cmder.exe просто меняется папка и запускается исполняемый файл, в частности Jupyter Lab:

cd C:\jupyterlab\
jupyter lab
Pause

Я пробовал различные подходы с:

@echo off
set CMDER_ROOT=C:\Cmder
start %CMDER_ROOT%\vendor\conemu-maximus5\ConEmu.exe /icon "%CMDER_ROOT%\cmder.exe" /title "Homestead VM" /loadcfgfile "%CMDER_ROOT%\config\ConEmu.xml" /cmd cmd /k "%CMDER_ROOT%\vendor\init.bat cd %CD% && %~1"

, как описано здесь , но безуспешно. В приведенном выше примере запускает запуска командующего, но также вызывает синтаксическую ошибку:

Текущий каталог: C: \ batches

Команда для выполнения: "C:\ Windows \ system32 \ cmd.exe "/ k" C: \ Cmder \ vendor \ init.bat cd C: \ batches && "

Я, очевидно, собираюсь кое-что здесь, так как ямогу запустить Commander, но я не уверен, как отредактировать оставшийся код, чтобы выполнить необходимые шаги. Я понимаю, что часть /title "Homestead VM" просто редактирует заголовок окна Commander:

enter image description here

, но я понятия не имею об остальных.

Если это просто невозможно, мне придется попытаться повторно связать .bat файлов в Control Panel > Default Programs > Associate a filetype, но я надеюсь избежать этого.

Спасибо за любыепредложения!

Системная информация:

Windows 7, 64 bit
Commander v1.3.12

Редактировать 1: Моя (неудачная) попытка выполнить предложение ГерхардаБарнард


Я сохранил файл с именем please.cmd в C:\Windows\System32, который содержит это:

@echo off
if not defined CMDER_ROOT set "CMDER_ROOT=C:\Cmder"
start %CMDER_ROOT%\vendor\conemu-maximus5\ConEmu.exe /icon "%CMDER_ROOT%\cmder.exe" /title "Homestead VM" /loadcfgfile "%CMDER_ROOT%\config\ConEmu.xml" /cmd cmd /k "%CMDER_ROOT%\vendor\init.bat cd %CD% && %~1"

Я также сохранил файл с именем SObatch.bat в C:\batches, который содержит это:

if not defined myComs set myComs=0 && please %~0
@echo off
ping localhost
echo %userprofile%
pause

При двойном щелчке SObatch.bat открывается приглашение Windows и запускаются эхо-запросы:

enter image description here

Я просто сузил окно, чтобы пропустить реальные имена пользователей. Но функции ping запускаются и возвращаются обычные ответы.

Так что я думаю, что все еще кажется, что я что-то сломал.

1 Ответ

1 голос
/ 11 октября 2019

Создайте файл с именем please.cmd и сохраните его в C:\Windows\System32 как администратор. Затем он должен существовать как c:\Windows\System32\please.cmd

@echo off
if not defined CMDER_ROOT set "CMDER_ROOT=C:\Cmder"
start %CMDER_ROOT%\vendor\conemu-maximus5\ConEmu.exe /icon "%CMDER_ROOT%\cmder.exe" /title "Homestead VM" /loadcfgfile "%CMDER_ROOT%\config\ConEmu.xml" /cmd cmd /k "%CMDER_ROOT%\vendor\init.bat cd %CD% && %*"

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

"%systemroot%\system32\please.cmd" "%~f0" && goto :eof

Вы также можете из cmd please command запустить его из оболочки cmder. Пример:

please ping localhost
...