Làm thế nào tôi có thể đóng một chương trình với dos khi tính toán kết thúc?


1

Tôi gặp vấn đề với việc chạy chương trình trong MATLAB bằng cách sử dụng tệp bó hoặc chỉ là hàm dos (). Bây giờ tôi có thể mở một chương trình en chạy nó với đầu vào bằng cách sử dụng:

bắt đầu chương trình.exe input.mdu

Nhưng khi tính toán xong thì không tự đóng. Tôi đã thử taskkill, taskkill kết hợp với / chờ, đóng, thoát, kết thúc, thực hiện, v.v. Tôi không có kinh nghiệm nào về vấn đề này và không thể tìm thấy bất kỳ thông tin nào về vấn đề này. Khi tôi thử các lệnh khác nhau, tôi không thể đóng nó hoặc đóng trước khi tính toán kết thúc.

Tôi có thể làm cho nó hoạt động trong cmd bằng cách sử dụng taskkill. Sau đó nó đợi cho đến khi chương trình kết thúc, nhưng khi tôi đặt nó vào một tệp bó hoặc trong hàm dos trong các vấn đề Matlab thì bắt đầu xảy ra.


1
Phiên bản Windows nào bạn có? Lưu ý rằng Widows cuối cùng với DOS là 98 (hoặc Millenium?). Trong các phiên bản Windows sau này có dòng lệnh thay thế DOS và sử dụng cú pháp DOS, nhưng đó không phải là hệ điều hành DOS.
Kamil

Câu trả lời:


1

Bạn đã thử sử dụng !program.exe input.mdu? Điều này sẽ trả lại quyền điều khiển cho Matlab sau khi chương trình được chạy. Xem phần cảm thán tronghelp punct

EDIT: Điều này sẽ không giúp đỡ nếu chương trình không bỏ mặc dù.


Oh tôi không bạn có thể làm điều đó. Rất đẹp. Nhưng bạn đã đúng, nó vẫn không hoạt động vì điều khiển không trở lại matlab.
Vấn đề 1000

0

Nếu bạn khởi động chương trình mà không có startlệnh (tạo cửa sổ mới), như thế này:

program.exe input.mdu

bạn có thể chấm dứt nó bằng cách nhấn CTRL+BREAK.

Nếu bạn phải sử dụng startđể chạy chương trình - bạn nên nhấn tổ hợp phím đó khi cửa sổ chương trình của bạn có tiêu điểm.

Từ MSDN ( liên kết ):

Các tổ hợp phím CTRL + C và CTRL + BREAK nhận được xử lý đặc biệt bởi các quy trình của bàn điều khiển. Theo mặc định, khi cửa sổ bàn điều khiển có tiêu điểm bàn phím, CTRL + C hoặc CTRL + BREAK được coi là tín hiệu (SIGINT hoặc SIGBREAK) và không phải là đầu vào bàn phím. Theo mặc định, các tín hiệu này được truyền đến tất cả các quy trình của bàn điều khiển được gắn vào bàn điều khiển. (...) CTRL + BREAK luôn được coi là tín hiệu, nhưng ứng dụng có thể thay đổi hành vi CTRL + C mặc định (...)


Tôi không muốn đưa vào bất cứ thứ gì một cách thủ công, vì nếu không tôi chỉ có thể nhấn chéo en đóng chương trình và sẽ không có vấn đề gì. Kịch bản MATLAB tiếp tục bình thường khi tôi đóng nó bằng tay.
Vấn đề 1000

0

Giết một quy trình khá dễ dàng với một tệp bó, nhưng làm thế nào DOS (hoặc có thể hơn là phiên lệnh Windows, không phải là DOS) biết khi MATLAB kết thúc tính toán? Bạn có thể yêu cầu MATLAB ghi một tệp khi hoàn thành và sử dụng nó làm tín hiệu. Nhưng tôi nghĩ rằng bạn đang đi về tất cả điều này sai.

MATLAB biết khi nào nó đã hoàn thành, có? Và bạn phải có một số loại kịch bản MATLAB chạy tính toán của bạn. Và MATLAB có lệnh EXIT .

Vì vậy, chỉ cần kết hợp lệnh EXIT vào tập lệnh MATLAB của bạn.


Tôi nghĩ rằng tôi đã không rõ ràng trước đây. Tôi có một tập lệnh MATLAB tiếp tục chạy trên máy tính để bàn từ xa miễn là muốn. Trong kịch bản đó, tôi muốn bắt đầu một chương trình mà tôi không tự viết và cần phải được hiển thị. Chương trình đó (với tệp đầu vào) tính toán một cái gì đó dự đoán cho ngày hôm sau. Hơn thế này là một lần nữa vào ngày hôm sau. Nhưng vòng lặp bị kẹt trong MATLAB, vì chương trình không đóng sau khi kết thúc. Và tôi nghĩ ý tôi là dòng lệnh windows, nhưng các lệnh trông giống như dos, vì vậy tôi nghĩ nó giống nhau. Vì vậy, matlab không không khi nó kết thúc không.
Vấn đề 1000

@ Vấn đề 1000 Vậy làm thế nào để mọi người biết khi nào nó kết thúc?
Peter

Tôi không biết. Tôi biết rằng nó đã hoàn thành. Chương trình biết rằng nó đã kết thúc. Tôi không thể nói với chương trình: đóng khi bạn tính toán xong?
Vấn đề 1000

0

Ok cảm ơn vì đã dành thời gian cho vấn đề của tôi, nhưng bây giờ tôi nghĩ rằng thực sự không có giải pháp. Tôi đã gửi mail cho các nhà sản xuất progam để bao gồm một cái gì đó sẽ khiến nó tự động đóng lại sau khi simulatioin. Và họ đang làm điều đó cho tôi bây giờ. Vì vậy, cảm ơn dù sao!

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.