Запуск cmd.exe з Cygwin


16

Я хотів би використовувати Cygwin для моєї основної оболонки на роботі, але моя група використовує пакетні файли для декількох процесів. Мені сказали, що я можу просто cmd /c batch.batзапустити пакетний файл від Cygwin. Це працює для деяких випадків, а не для інших. Один з пакетних файлів повністю виходить з ладу, коли я це роблю, але добре працює, коли запускаю його з оболонки cmd.

Ще одна дивна річ, яку я помітив, це те, що якщо я біжу cmd /?від Cygwin, я не отримаю результатів. Запуск цього з оболонки cmd дає стандартну допомогу. Навіть це cmd /c cmd /?не дає результату. Якщо я біжу cmdвід Cygwin, він дає мені оболонку cmd, і тоді, якщо я запускаю cmd /?, я отримую текст довідки, але без розривів сторінки.

Я думаю, що наступне, що потрібно спробувати, - це знайти спосіб насправді запустити cmd у своєму окремому вікні, як ніби ви перейшли до «Пуск»> «Виконати», а потім набрали «cmd». Чи є спосіб зробити це всередині Cygwin?

Відповіді:


8

/?трактується як зразок bash, де знак питання вмістить один символ, тому якщо у вашому корені Cygwin є якісь однобуквені файли або каталоги, шаблон буде замінено на такий. echo /?покаже, якщо це відбувається. Ви можете уникнути знак питання зворотної косої межі: /\?. Або цитувати весь аргумент: '/?'.

cygstart c:/windows/system32/cmd запустить cmd.exe у власному вікні.


на моєму ноутбуці win xp sp2 працює цей наступний фрагмент коду: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

14

Ви можете запустити пакетний файл безпосередньо з оболонки Cygwin, вам навіть проміжний дзвінок навіть не потрібен cmd. Якщо пакетний файл вимагає аргументів, їх потрібно цитувати в Windows; це може бути простіше запустити cmd /c 'foo.bat "quoted arguments"'.

Ви не кажете, в якому терміналі ви працюєте з оболонкою. Пакетні файли самі по собі цього не цікавлять, але команди, які виконуються з пакетних файлів, можуть бути. Емулятори терміналів Cygwin не емулюють консолі Windows, тому вони хороші для програм Cygwin і для програм тільки для stdio, але не для програм консолі Windows.

Якщо зазвичай запущені оболонки Cygwin в терміналі Cygwin (наприклад, rxvt або mintty), ви можете запускати файли проблемних пакетів в окремій консолі Windows start foo.bat. Ви можете запустити Console2 як кращу заміну для консолі Windows, а також запустити програми консолі Windows у додатках Console2 та Cygwin в терміналі Cygwin (або навіть у Console2).

cmd /?є червоною оселедцем: в кореневому каталозі Cygwin є, мабуть, однозначні каталоги, тому оболонка розширюється /?і працює за cmdдопомогою перемикачів, які не дають результатів.


Мені потрібно було вставити змінні оболонки в аргументи cmd, тому я зрозумів, що навколо Bash та 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 правда
вугор ghEEz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.