Uruchamianie cmd.exe z poziomu Cygwin


16

Chciałbym użyć Cygwin do mojej głównej powłoki w pracy, ale moja grupa używa plików wsadowych do kilku procesów. Powiedziano mi, że mogę po prostu cmd /c batch.baturuchomić plik wsadowy z Cygwin. Działa to w niektórych przypadkach, a nie w innych. Jeden z plików wsadowych całkowicie nie działa, gdy to robię, ale działa dobrze, gdy uruchamiam go z powłoki cmd.

Inną osobliwością, którą zauważyłem, jest to, że jeśli uruchomię cmd /?z Cygwin, nie otrzymam żadnych danych wyjściowych. Uruchomienie tego z powłoki cmd daje standardową pomoc. Nawet robienie cmd /c cmd /?nie daje żadnych rezultatów. Jeśli uruchomię cmdz Cygwin, daje mi powłokę cmd, a następnie, jeśli uruchomię cmd /?, otrzymuję tekst pomocy, ale bez podziału strony.

Sądzę, że następną rzeczą do znalezienia jest znalezienie sposobu na uruchomienie cmd w osobnym oknie, tak jakbyś poszedł do Start-> Uruchom, a następnie wpisał „cmd”. Czy istnieje sposób, aby to zrobić z poziomu Cygwin?

Odpowiedzi:


8

/?jest traktowany jako wzorzec przez bash, gdzie znak zapytania zmieści się z jednym znakiem, więc jeśli masz pliki z literami lub katalogami w katalogu głównym Cygwin, wzór zostanie zastąpiony tymi. echo /?pokaże Ci, czy tak się dzieje. Można uciec znak zapytania z odwrotnym ukośnikiem: /\?. Lub zacytować cały argumentu '/?'.

cygstart c:/windows/system32/cmd uruchomi cmd.exe we własnym oknie.


na mojej win xp sp2 latop działałby następujący fragment kodu: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

14

Możesz uruchomić plik wsadowy bezpośrednio z powłoki Cygwin, nie potrzebujesz nawet pośredniego wywołania do cmd. Jeśli plik wsadowy wymaga argumentów, należy je cytować w stylu Windows; uruchomienie może być prostsze cmd /c 'foo.bat "quoted arguments"'.

Nie mów w jakim terminalu uruchamiasz powłokę. Same pliki wsadowe nie dbają o to, ale polecenia wykonywane z plików wsadowych mogą. Emulatory terminali Cygwin nie emulują konsol Windows, więc są dobre dla programów Cygwin i programów tylko dla standardu stdio, ale nie dla programów konsoli Windows.

Jeśli normalnie uruchomisz powłoki Cygwin w terminalu Cygwin (takim jak rxvt lub mintty), możesz uruchomić pliki wsadowe kłopotów w osobnej konsoli Windows za pomocą start foo.bat. Możesz uruchomić konsolę 2 jako lepszy zamiennik konsoli Windows i uruchomić aplikacje konsoli Windows w konsoli Console2 i aplikacjach Cygwin w terminalu Cygwin (lub nawet w konsoli Console2).

cmd /?to czerwony śledź: w katalogu głównym Cygwin są prawdopodobnie katalogi o długości jednego znaku, więc powłoka rozszerza się /?i działa cmdz przełącznikami, które nie generują danych wyjściowych.


Musiałem wkleić zmienne powłoki do argumentów cmd, więc doszedłem do wniosku, że następujące działania mogą obejść parsery Bash i cmd: 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
węgorz ghEEz 28.12.2016
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.