Windows'ta komut satırında boşluklardan nasıl kaçarım?


0

Buna benzer bir sorunum var Windows'ta tırnak işaretleri kullanmadan komut satırındaki boşluklardan nasıl kaçabilirim?

Ama görünen o ki şapkaları kullanamıyorum

C:\>C:\Program^ Files^ (x86)\Adobe\Reader^ 11.0\Reader\AcroRd32.exe
C:\Program Files is not recognized as an internal or external command, operable program or batch file.

cd iyi çalışıyor:

C:\>cd C:\Program^ Files^ (x86)\Adobe\Reader^ 11.0\Reader\
C:\Program Files (x86)\Adobe\Reader 11.0\Reader>

Adobe Reader’ı C ++ App’tan

UniString cmd("\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" ");
system(cmd.ToCStr());

Bu tamam, Adobe okuyucu başladı. Ancak argüman yolunu pdf'ye iletmek için başka bir kaçış tırnak işareti eklediğimde

UniString cmd("\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" \"");
cmd.Append("A\\B with space\\C\\test.pdf");
cmd.Append("\"");
system(cmd.ToCStr());

Bende var

C:\Program is not recognized as an internal or external command, operable program or batch file. 

Burada neler oluyor? Neden şapkaları veya kaçan tırnakları daha fazla kullanamıyorum?

(Tanrım, pencerelerden çok nefret ediyorum)


peki, CD’nin şapkasız (ve tırnaksız) bile çalıştığını unutmayın. öyleyse, şapkalar kaçış yerlerinden nasıl geçebilir veya boşluklar tırnak işaretleri olmadan nasıl çıkarılabilir. umarım öğreniriz!
barlop

Teşhis için değişken isimleri kullanmaya çalışın .. yani str = "...." yapın
barlop

Bu sorunun cevabını farkettim, bale uzayda kaçan bir örnek var superuser.com/questions/279008/… `C: \> c: \ Documents and Settings \ a.bat 'c: \ Documents' tanınmadı dahili veya harici bir komut olarak, çalıştırılabilir bir program veya toplu iş dosyası. C: \> c: \ Documents ^ ve ^ Settings \ a.bat <- yani ne yapması gerektiğini görüntüler.
barlop

Yanıtlar:


1

Cmd.exe programını başlatmak ve ardından acrobat'ı çalıştırmasını söylemek yerine CreateProcess () işlevini kullanmanız gerektiğine inanıyorum.

Kurulumu daha karmaşık, ancak cmd'nin kuşkusuz garip komut satırı işlemesinden geçmeniz gerekmiyor.

güncelleme: Ben sadece bir başkasının yardımcı olabilecek bir cevap sağlayan benzer bir soru vardı gibi hızlı bir göz attım: https://stackoverflow.com/questions/486087/how-to-call-an-external-program-with-parameters


Küçük bir örnek verebilir misiniz? CreateProcess sözdizimi benim için büyük bir karmaşa ...
bartimar

0

Çözdüm:

sistem için () iki çıkış işareti kullanmak zorunda kaldım

UniString cmd("\"\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" \"D:\\Second Path\\Foo\\Bar\"\");
system(cmd.ToCStr());

veya WinExec () ile daha iyi

UniString cmd("\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" \"D:\\Second Path\\Foo\\Bar\");
WinExec(cmd.ToCStr(),SW_SHOW);

0

Tüm dizeyi çift tırnak işareti içine alın, şöyle yapın: "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"


Soruyu okudun mu bile? Yolu çalıştırılabilir ve argümanla system () işlevine argümandan geçirmek istiyorum ...
bartimar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.