Parametr docelowy skrótu Windows rozpoczynający się od @


12

Mam aplikację systemu Windows, którą muszę wywołać za pomocą skrótu na pulpicie i niektórych parametrów wiersza polecenia.

Robiłem to tysiące razy, ale ten jest nieco inny. Zamiast używać normalnego parametru wiersza polecenia, takiego jak -e 12345lub -example 12345, ten używa @12345(zaczynając od @symbolu).

Skróty systemu Windows nie lubią tego parametru pojawiającego się bezpośrednio po nazwie pliku wykonywalnego i po prostu usuwa wszystko. Nie wiem dlaczego.

Na przykład:

c:\example\example.exe @12345 -e9876jako „cel” podczas zapisywania usuwa wszystkie parametry i pozostawia tak samo, c:\example\example.exejak cel.

Ale c:\example\example.exe -e9876 @12345 działa dobrze. Zapisuje i potwierdza, a wszystko jest dobrze.

Jednak muszę ten @parametr, aby być pierwszym na komendzie. Oprócz robienia czegoś takiego jak zawijanie polecenia do pliku wsadowego i wywoływanie wsadu, jak mogę mieć @symbol jako pierwszy parametr wiersza poleceń w skrócie Windows?


1
Inną opcją jest zacytowanie parametrów (indywidualnie), zakładając, że wspomniany program to obsługuje. Ciekawe zachowanie, które właśnie znalazłem podczas testowania: parametry zniknęły z pola Cel, ale nadal są przekazywane do programu docelowego! W rzeczywistości niewidoczne parametry są zachowywane do momentu ponownej edycji pola, a .lnkpliki są różne. (Testowany z celem jako plik wsadowy, który po prostu odzwierciedla parametry przekazane.)
Bob

Odpowiedzi:


13

Kto wiedział? ... Windows najwyraźniej traktuje @znak jako ogranicznik. Polecenia Windows zinterpretują tylko pierwszy element polecenia ... więc skutecznie obcina resztę. Najwyraźniej można zastąpić zachowanie, podając ^przed nim znak ucieczki od symbolu.

to znaczy

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


3
Hej! To działa! Z ciekawości, jak do cholery znalazłeś odpowiedź na to?
Mark Henderson

3
Deeeep mroczne posty z poprzednich lat. Pewna osoba odniosła się do dokumentów, które już nie istnieją (lub przynajmniej nie są łatwe do znalezienia) i wspomniała o niektórych ciekawostkach. Wspomniał także o postaciach $i %znakach, które mogą powodować inne problemy. Możesz uciec tym, którzy używają tej samej ^postaci. Możesz także uciec przed ucieczką, postępując ^^zgodnie z oczekiwaniami.
TheCompWiz

4
@MarkHenderson Symbol Caret „^” jest standardowym symbolem „ucieczki przed kolejnym znakiem” używanym przez cały interfejs API WIN32 (i później 64-bitowych), ponieważ (jeśli dobrze pamiętam) przynajmniej NT 3.5 (tak: starzeję się ). Działa w prawie każdym miejscu w systemie Windows, w którym można podać wiersz polecenia: skrypty / monit CMD, okno uruchamiania Windows + R, skróty, w wierszach poleceń związanych z usługami i zaplanowanymi zadaniami, aby nazwać mało.
Tonny,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.