Como passar% CD% para um aplicativo usando o GuiMacro Shell no ConEmu

0

A documentação na Shell não é muito clara, talvez eu esteja ficando confuso.

  1. Como posso passar% CD% como argumento para um comando que estou executando?
  2. Qual é exatamente o primeiro argumento? O que significa "abrir", "imprimir" e assim por diante? O que é "", "" no segundo exemplo significa.

Em particular, estou interessado em executar um comando assim:

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

Mas isso não funciona bem. explorer abre, mas não com o CD. O último exemplo da documentação funciona:

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

Isso é intrigante. Por que isso está funcionando e não o outro?

Estou usando o build 161022 (mais recente quando estou escrevendo).

Obrigado,

    
por sly 26.11.2016 / 00:00

1 resposta

1

A macro Shell tem muito em comum com a função ShellExecute WinAPI . Portanto, open , print e outros têm o mesmo significado que lpOperation argumento da função.

Alternativamente, o primeiro argumento da Shell aceita os new_console switches internos do ConEmu, sem o mínimo possível.

Em seguida, o ConEmu não expande os nomes das variáveis para seus valores quando executar Shell function. Você pode verificar isso facilmente com Process Explorer executando cmd em vez de explorer . Exemplo:

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

Quando você executa Shell("open",...) ConEmu não herda o ambiente. Mas quando você especifica new_console:I em vez de open , isso acontece. Portanto, no exemplo do site CD é "herdado" corretamente.

Por fim, você não citou %CD% corretamente em seu primeiro exemplo. Isso realmente não importa (também não funcionaria), mas a notação correta seria ..., "\"%CD%\"") , o mesmo que no exemplo do site.

    
por 26.11.2016 / 13:33

Tags