Parâmetro de destino do atalho do Windows começando com um @

12

Eu tenho um aplicativo do Windows que preciso chamar com um atalho na área de trabalho e alguns parâmetros da linha de comando.

Eu fiz isso milhares de vezes, mas este é um pouco diferente. Em vez de usar um parâmetro normal da linha de comando como -e 12345ou -example 12345, este usa @12345(começando com o @símbolo).

Os atalhos do Windows não gostam desse parâmetro imediatamente após o nome do executável e apenas retiram tudo. Não sei porque.

Por exemplo:

c:\example\example.exe @12345 -e9876como o "alvo", ao salvar, retira todos os parâmetros e sai c:\example\example.execomo o alvo.

Mas c:\example\example.exe -e9876 @12345 funciona muito bem. Ele salva e valida, e tudo é bom.

No entanto , preciso que o @parâmetro seja o primeiro no comando. Além de fazer algo como agrupar o comando em um arquivo em lotes e chamá-lo, como posso um @símbolo ser o primeiro parâmetro de linha de comando em um atalho do Windows?

Mark Henderson
fonte
1
A outra opção é citar os parâmetros (individualmente), assumindo que o referido programa apóie isso. Comportamento interessante que acabei de encontrar nos testes: os parâmetros foram removidos do campo Target, mas ainda são passados ​​para o programa de destino! De fato, os parâmetros agora invisíveis são preservados até você editar o campo novamente e os .lnkarquivos serem realmente diferentes. (Testado com o alvo, como um ficheiro batch que simplesmente ecoa os parâmetros passados no.)
Bob

Respostas:

13

Quem sabia? ... O Windows aparentemente trata o @personagem como um delimitador. Os comandos do Windows interpretam apenas o primeiro elemento no comando ... portanto, efetivamente trunca o restante. Aparentemente, você pode substituir o comportamento fornecendo um ^antes dele escapar do símbolo.

ie

c:\example\example.exe ^@12345 -e9876

TheCompWiz
fonte
3
Ei! Funciona! Por curiosidade, como você encontrou a resposta para isso?
Mark Henderson
3
Profundos lançamentos escuros de anos passados. Alguém fez referência a documentos que não existem mais (ou pelo menos não é fácil de encontrar) e mencionou alguns desses petiscos. Ele também mencionou coisas como os personagens $e %que podem causar outros problemas. Você pode escapar daqueles que usam o mesmo ^personagem. Você também pode escapar da fuga fazendo ^^o que pode esperar.
TheCompWiz
4
@MarkHenderson O símbolo de sinal de intercalação "^" é o símbolo padrão "escape the next character" usado por toda a API WIN32 (e posterior de 64 bits), pois (se bem me lembro) pelo menos NT 3.5 (sim: estou ficando velho ) Funciona em praticamente qualquer lugar do Windows onde você pode fornecer uma linha de comando: scripts / prompt de CMD, caixa de execução WIndows + R, atalhos, nas linhas de comando associadas a serviços e tarefas agendadas, apenas para nomear um poucos.
Tonny