Chạy cmd.exe từ bên trong Cygwin


16

Tôi muốn sử dụng Cygwin cho trình bao chính của mình tại nơi làm việc, nhưng nhóm của tôi sử dụng các tệp bó cho một số quy trình. Tôi đã được thông báo rằng tôi chỉ có thể làm cmd /c batch.batđể chạy tệp bó từ Cygwin. Điều này làm việc cho một số trường hợp, và không phải cho những người khác. Một trong các tệp bó hoàn toàn thất bại khi tôi thực hiện việc này, nhưng hoạt động tốt khi tôi chạy nó từ trình bao cmd.

Một điều kỳ lạ khác mà tôi nhận thấy là nếu tôi chạy cmd /?từ Cygwin, tôi không nhận được kết quả nào. Chạy này từ vỏ cmd cung cấp trợ giúp tiêu chuẩn. Ngay cả làm cmd /c cmd /?không cung cấp đầu ra. Nếu tôi chạy cmdtừ Cygwin, nó sẽ cho tôi trình bao cmd, và sau đó nếu tôi chạy cmd /?, tôi nhận được văn bản trợ giúp, nhưng không bị vỡ trang.

Tôi đoán điều tiếp theo cần thử là tìm cách khởi chạy cmd trong cửa sổ riêng biệt của nó, như thể bạn đã đi đến Start-> Run, sau đó gõ "cmd". Có cách nào để làm điều này từ bên trong Cygwin?

Câu trả lời:


8

/?được xử lý như một mẫu bằng bash, trong đó dấu hỏi sẽ khớp với một ký tự đơn, vì vậy nếu bạn có bất kỳ tệp hoặc thư mục nào trong thư mục gốc Cygwin, mẫu sẽ được thay thế bằng các ký tự đó. echo /?sẽ chỉ cho bạn nếu đó là những gì đang xảy ra. Bạn có thể thoát dấu chấm hỏi bằng dấu gạch chéo ngược : /\?. Hoặc trích dẫn toàn bộ lập luận : '/?'.

cygstart c:/windows/system32/cmd sẽ bắt đầu cmd.exe trong cửa sổ riêng của nó.


trên win của tôi xp sp2 latop đoạn mã sau này sẽ hoạt động: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

13

Bạn có thể chạy trực tiếp một tệp bó từ trình bao Cygwin, thậm chí bạn không cần gọi trung gian cmd. Nếu tệp bó yêu cầu đối số, chúng cần được trích dẫn theo kiểu Windows; nó có thể đơn giản hơn để chạy cmd /c 'foo.bat "quoted arguments"'.

Bạn không nói trong thiết bị đầu cuối nào bạn đang chạy shell. Bản thân các tệp hàng loạt không quan tâm đến điều đó, nhưng các lệnh được thực thi từ các tệp bó có thể. Trình giả lập thiết bị đầu cuối Cygwin không giả lập bảng điều khiển Windows, vì vậy chúng tốt cho các chương trình Cygwin và cho các chương trình chỉ dành cho stdio nhưng không dành cho các chương trình bảng điều khiển Windows.

Nếu bình thường chạy shell Cygwin trong thiết bị đầu cuối Cygwin (chẳng hạn như rxvt hoặc mintty), Bạn có thể chạy các tệp bó rắc rối trong bảng điều khiển Windows riêng biệt với start foo.bat. Bạn có thể muốn chạy Console2 như một sự thay thế tốt hơn cho bảng điều khiển Windows và chạy các ứng dụng bảng điều khiển Windows trong các ứng dụng Console2 và Cygwin trong một thiết bị đầu cuối Cygwin (hoặc thậm chí trong Console2).

cmd /?là một cá trích đỏ: có lẽ có các thư mục dài một ký tự trong thư mục gốc Cygwin, vì vậy shell mở rộng /?và chạy cmdvới các công tắc xảy ra không tạo ra đầu ra.


Tôi cần dán các biến shell vào các đối số cmd, vì vậy tôi đã tìm ra những điều sau đây có thể hoạt động xung quanh trình phân tích cú pháp Bash và 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% - fooebar đúng
lươn ghEEz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.