Цільовий параметр ярлика Windows, починаючи з @


12

У мене є програма Windows, яку потрібно викликати ярликом на робочому столі та деякими параметрами командного рядка.

Я робив це тисячі разів, але цей трохи інший. Замість того, щоб використовувати звичайний параметр командного рядка типу -e 12345або -example 12345, цей використовується @12345(починаючи з @символу).

Комбінації клавіш Windows не люблять, щоб цей параметр з’явився відразу після назви виконуваного файлу, і він просто усуває все. Я не знаю чому.

Наприклад:

c:\example\example.exe @12345 -e9876оскільки "ціль" при збереженні викреслює всі параметри та залишає так само, c:\example\example.exeяк ціль.

Але c:\example\example.exe -e9876 @12345 працює просто чудово. Це економить і перевіряє, і все добре.

Однак мені потрібен @параметр, щоб бути першим у команді. Окрім того, щоб робити щось на зразок загортання команди у пакетний файл та виклику пакету, як я можу, щоб @символ був першим параметром командного рядка у ярлику Windows?


1
Інший варіант - цитувати парами (окремо), припускаючи, що зазначена програма підтримує це. Цікава поведінка, яку я щойно виявив на тестуванні: парами пішли з поля «Ціль», але вони все ще передаються цільовій програмі! Насправді тепер невидимі парами зберігаються, поки ви знову не редагуєте поле, а .lnkфайли фактично відрізняються. (Тестується з ціллю у вигляді пакетного файлу, який просто перегукується з переданими парамами.)
Боб

Відповіді:


13

Хто знав? ... Windows, мабуть, трактує @персонажа як розмежувач. Команди Windows інтерпретуватимуть лише перший елемент команди ... тому він ефективно обрізає решту. Мабуть, ви можете змінити поведінку, подавши ^перед цим, щоб уникнути символу.

тобто

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


3
Гей! Це працює! З цікавості, як ти знайшов відповідь на це?
Марк Хендерсон

3
Поглиблені темні пости юстер-років. Хтось посилався на документи, які вже не існують (або, принаймні, їх нелегко знайти), і згадав про деякі ті примхи. Він також згадав такі речі, як символи $та %символи, які можуть спричинити інші проблеми. Ви можете уникнути тих, хто використовує той самий ^символ. Ви також можете уникнути втечі, зробивши так, ^^як ви могли очікувати.
TheCompWiz

4
@MarkHenderson Символ Caret "^" - це стандартний символ "уникнути наступного символу", який використовується тоді всім API WIN32 (а пізніше 64-бітовим) API, оскільки (якщо я правильно пам'ятаю) щонайменше NT 3,5 (так: я старію ). Він працює практично в будь-якому місці в Windows, де ви можете надати командний рядок: CMD-скрипти / підказки, WIndows + R запуску, ярлики, у командних рядках, пов’язаних із службами та запланованими завданнями, просто для того, щоб назвати нечисленні.
Тонні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.