Cmd.exe dosyasını Cygwin içinden çalıştırma


16

Cygwin'i işyerindeki ana kabuğum için kullanmak istiyorum, ancak grubum birkaç işlem için toplu iş dosyaları kullanıyor. cmd /c batch.batToplu iş dosyasını Cygwin'den çalıştırmak için yapabileceğim söylendi . Bu bazı durumlarda işe yarar, diğerleri için geçerli değildir. Bunu yaptığımda toplu iş dosyalarından biri tamamen başarısız oluyor, ancak cmd kabuğundan çalıştırdığımda iyi çalışıyor.

Fark ettiğim bir başka tuhaflık ise, eğer cmd /?Cygwin'den kaçarsam, hiçbir çıktı almam. Bunu cmd kabuğundan çalıştırmak standart yardımı verir. Yapmak bile cmd /c cmd /?çıktı vermez. cmdCygwin'den çalıştırırsam , bana cmd kabuğunu verir ve sonra çalıştırırsam cmd /?, yardım metnini alırım, ancak sayfa kırılmaz.

Sanırım denemek için bir sonraki şey, sanki Başlat-> Çalıştır ve daha sonra "cmd" yazmış gibi kendi farklı pencerede cmd başlatmak için bir yol bulmaktır sanırım. Bunu Cygwin içinden yapmanın bir yolu var mı?

Yanıtlar:


8

/?soru işareti tek bir karaktere sığacak şekilde bash tarafından bir desen olarak ele alınır, bu nedenle Cygwin kökünüzde herhangi bir tek harfli dosya veya dizin varsa, desen bunlarla değiştirilir. echo /?olup olmadığını size gösterecektir. Bir ters eğik çizgi ile soru işareti kaçabilir: /\?. Veya bütün argüman alıntı: '/?'.

cygstart c:/windows/system32/cmd cmd.exe dosyasını kendi penceresinde başlatacaktır.


benim kazanmak xp sp2 latop bu kod pasajı işe yarayacaktı: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

14

Bir toplu iş dosyasını doğrudan bir Cygwin kabuğundan çalıştırabilirsiniz, ara aramaya bile ihtiyacınız yoktur cmd. Toplu iş dosyası bağımsız değişkenler gerektiriyorsa, bunların Windows biçiminde alıntılanması gerekir; çalıştırmak daha kolay olabilir cmd /c 'foo.bat "quoted arguments"'.

Hangi terminalde kabuğu çalıştırdığınızı söylemiyorsunuz. Toplu iş dosyaları tek başına bunu umursamıyor, ancak toplu iş dosyalarından yürütülen komutlar olabilir. Cygwin terminal emülatörleri Windows konsollarını taklit etmez, bu nedenle Cygwin programları ve yalnızca stdio programları için iyidir, ancak Windows konsol programları için iyi değildir.

Normalde bir Cygwin terminalinde (rxvt veya nane gibi) Cygwin kabuklarını çalıştırıyorsanız, sorunlu toplu iş dosyalarını ayrı bir Windows konsolunda çalıştırabilirsiniz start foo.bat. Konsol2'yi Windows konsolu için daha iyi bir yedek olarak çalıştırmak ve bir Konsol2 ve Cygwin uygulamalarında bir Cygwin terminalinde (hatta Konsol2'de) Windows konsol uygulamalarını çalıştırmak isteyebilirsiniz .

cmd /?kırmızı bir ringa balığıdır: Cygwin kök dizininde muhtemelen bir karakter uzunluğunda dizinler vardır, bu nedenle kabuk genişler /?ve cmdçıktı üretmeyen anahtarlarla çalışır .


Kabuk değişkenlerini cmd argümanlarına yapıştırmam gerekiyordu, bu yüzden aşağıdakilerin Bash ve cmd ayrıştırıcıları etrafında çalışabileceğini düşündüm: u = 'DOMAIN \ ACC' p = 'X <12' r = '{Baz 3.1 5-x - (TTT )} 'd = $' \ "'cmd / c foo.bat -u% d %% u %% d% -p% d %% p %% d% -fooBar% d %% r %% d% - fooBAR true
eel ghEEz
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.