Parameter target pintasan Windows dimulai dengan @

12

Saya memiliki aplikasi Windows yang perlu saya panggil dengan pintasan desktop dan beberapa parameter baris perintah.

Saya sudah melakukan ini ribuan kali, tetapi yang ini sedikit berbeda. Alih-alih menggunakan parameter baris perintah normal seperti -e 12345atau -example 12345, ini menggunakan @12345(dimulai dengan @simbol).

Cara pintas Windows tidak suka parameter ini datang segera setelah nama yang dapat dieksekusi, dan hanya menghapus semuanya. Saya tidak tahu kenapa.

Sebagai contoh:

c:\example\example.exe @12345 -e9876sebagai "target", saat menyimpan, menghapus semua parameter dan meninggalkan hanya c:\example\example.exesebagai target.

Tapi c:\example\example.exe -e9876 @12345 berfungsi dengan baik. Ini menghemat, dan memvalidasi, dan semuanya baik.

Namun saya perlu @parameter untuk menjadi yang pertama di perintah. Selain melakukan sesuatu seperti membungkus perintah dalam file batch dan memanggil batch, bagaimana saya bisa memiliki @simbol menjadi parameter baris perintah pertama pada pintasan Windows?

Mark Henderson
sumber
1
Pilihan lainnya adalah mengutip params (satu per satu), dengan asumsi program mengatakan mendukungnya. Perilaku menarik yang baru saja saya temukan pada pengujian, tetapi: params telah hilang dari bidang Target tetapi mereka masih diteruskan ke program target! Bahkan, param yang sekarang tidak terlihat dipertahankan hingga Anda mengedit bidang lagi, dan .lnkfile sebenarnya berbeda. (Diuji dengan target sebagai file batch yang hanya menggemakan param yang dilewati.)
Bob

Jawaban:

13

Siapa yang tahu? ... Windows tampaknya memperlakukan @karakter sebagai pembatas. Perintah Windows hanya akan menafsirkan elemen pertama dalam perintah ... sehingga secara efektif memotong sisanya. Rupanya, Anda dapat mengganti perilaku dengan memasok ^sebelum untuk melarikan diri dari simbol.

yaitu

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

TheCompWiz
sumber
3
Hei! Berhasil! Karena penasaran, bagaimana Anda menemukan jawaban untuk itu?
Mark Henderson
3
Deeeep postingan gelap tahun-tahun yang lalu. Beberapa orang membuat referensi ke dokumen yang tidak ada lagi (atau setidaknya tidak mudah ditemukan) dan menyebutkan beberapa informasi rahasia itu. Dia juga menyebutkan hal-hal seperti $dan %karakter yang dapat menyebabkan masalah lain. Anda dapat melarikan diri dari mereka yang menggunakan ^karakter yang sama . Anda juga dapat melarikan diri dari pelarian dengan melakukan ^^seperti yang Anda harapkan.
TheCompWiz
4
@MarkHenderson Simbol Caret "^" adalah standar "melarikan diri karakter berikutnya" simbol yang digunakan oleh seluruh WIN32 (dan kemudian 64-bit) API sejak (jika saya ingat dengan benar) setidaknya NT 3.5 (ya: saya semakin tua ). Ini bekerja di hampir semua tempat di Windows di mana Anda dapat menyediakan baris perintah: CMD-scripts / prompt, kotak run WIndows + R, jalan pintas, di baris perintah yang terkait dengan layanan dan tugas yang dijadwalkan, hanya untuk menyebutkan nama beberapa.
Tonny