Документация по Shell не очень ясна, возможно, я запутался.

  1. Как передать% CD% в качестве аргумента команде, которую я запускаю?
  2. Что именно является первым аргументом? Что означает "открыть", "напечатать" и т.д.? Что означает "", "" во втором примере.

В частности, я заинтересован в запуске такой команды:

Shell("open","explorer","%CD%")

Но это не совсем работает. explorer открывается, но не с компакт-диска. Самый последний пример документации работает:

Shell("new_console:Ibn","cmd","/k start explorer \"%CD%\" && exit")

Это озадачивает. Почему это работает, а не другой?

Я использую сборку 161022 (последняя на момент написания).

Спасибо,

1 ответ1

1

Макрос Shell имеет много общего с функцией ShellExecute WinAPI. Поэтому open , print и другие имеют то же значение, что и аргумент lpOperation функции.

Альтернативно, первый инструмент Shell принимает внутренние переключатели new_console ConEmu без начального тире.

Далее, ConEmu не расширяет имена переменных до их значений при выполнении функции Shell . Вы можете легко проверить это с помощью Process Explorer , выполнив cmd вместо explorer . Пример:

Shell("open","cmd","%CD%")

Когда вы запускаете Shell("open",...) ConEmu не делает наследование среды. Но когда вы указываете new_console:I вместо open , это делает. Так что в примере с сайта CD правильно "унаследован".

Наконец, вы не правильно указали %CD% в вашем первом примере. Это на самом деле не имеет значения (это также не будет работать), но правильная запись будет ..., "\"%CD%\"") , так же, как в примере с сайта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .