Làm thế nào để tự động đóng cửa sổ cmd sau khi thực thi hàng loạt tệp?


88

Tôi đang chạy một tệp loạt có hai dòng sau:

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Tệp lô này được sử dụng để chạy ứng dụng Xming và sau đó là ứng dụng PuTTY để tôi có thể SSH vào phòng máy tính của trường đại học của mình.

Tuy nhiên, nếu tôi chạy điều này và Xming vẫn chưa mở, khi tôi thoát khỏi thiết bị đầu cuối PuTTY, cửa sổ cmd vẫn mở. Chỉ khi tôi đã chạy Xming thì cửa sổ cmd mới đóng khi tôi đóng thiết bị đầu cuối PuTTY. Tôi đã thử thêm exitvào dòng cuối cùng của tệp loạt, nhưng vô ích.


1
"C:\Program Files (x86)\Xming\Xming.exe"một tham số từ putty.exe, hay một lệnh riêng biệt?
bpoiss

Nếu dòng thứ hai là lệnh thứ hai, hãy thử thêm bắt đầu trước đó.
Xám

1
@BernhardPoiss nó là một lệnh riêng biệt, KHÔNG PHẢI là một tham số cho putty.exe. Nếu tôi đặt dòng đó trước, nó sẽ bị treo và không mở được. Nếu tôi đặt bắt đầu ở phía trước của nó, cửa sổ nói "can not find 'C: \ Program'.. Xin vui lòng chắc chắn rằng nó là loại một cách chính xác
Yiwei

Câu trả lời:


134

Sửa đổi tệp hàng loạt thành STARTcả hai chương trình, thay vì nhập STARTmột và nhập một chương trình CALLkhác

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Nếu bạn chạy nó như vậy, sẽ không có cửa sổ CMD nào vẫn mở sau khi khởi động chương trình.


28
+1 ngoại trừ khi bạn sử dụng dấu ngoặc kép cho đường dẫn, bạn phải thêm tham số đầu tiên ""khi tiêu đề trở nên bắt buộc. Lệnh thứ hai nên start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindownếu không nó sẽ cố gắng để mở một cửa sổ lệnh mang tên C:\Program Files (x86)\Xming\Xming.execố gắng để thực hiện :0với các thông số-clipboard -multiwindow
Patrick Meinecke

Ngoài ra, start /B "GCFScape" "x64\GCFScape.exe">nulví dụ này rất hữu ích cho tôi
xacinay

4
"Nếu lệnh là một lệnh cmd nội bộ hoặc một tệp hàng loạt thì bộ xử lý lệnh sẽ được chạy với / K chuyển sang cmd.exe. Điều này có nghĩa là cửa sổ sẽ vẫn còn sau khi lệnh được chạy." ss64.com/nt/start.html
CAD bloke

3
@CADbloke vấn đề nêu trên của bạn có thể được giải quyết bằngcmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning

1
@ Patrick-meinecke Cảm ơn bạn đã thêm nhận xét về "", tôi rất thất vọng vì điều này đang gây ra sự cố cho tôi. Tôi đọc bạn bình luận và một khoảnh khắc ah ha xảy ra sau đó.
Michael Eakins

21

Bạn thường kết thúc một tập tin hàng loạt bằng một dòng chỉ cho biết exit. Nếu bạn muốn chắc chắn rằng tệp đã chạy và cửa sổ DOS đóng sau 2 giây, bạn có thể thêm các dòng:

timeout 2 >nul
exit

Nhưng exitlệnh sẽ không hoạt động nếu tệp hàng loạt của bạn mở một cửa sổ khác, vì trong khi cửa sổ thứ hai đang mở thì cửa sổ DOS cũ cũng sẽ được hiển thị.

GIẢI PHÁP: Ví dụ: có một chương trình nhỏ miễn phí tuyệt vời tên là BgInfo sẽ hiển thị tất cả thông tin về máy tính của bạn. Giả sử nó nằm trong một thư mục được gọi là C:\BgInfo, để chạy nó từ một tệp hàng loạt bằng công /popuptắc và để đóng cửa sổ DOS trong khi nó vẫn chạy, hãy sử dụng:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

đã /popupthực sự cho tôi một lỗi. Sau khi loại bỏ tất cả làm việc
Dmitry Efimenko

4

Nếu bạn muốn tách các lệnh thành một lệnh cho mỗi tệp, bạn có thể làm

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"

và trong tệp khác, bạn có thể làm

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Lệnh cmd / c sẽ đóng cửa sổ nhắc lệnh sau khi exe được chạy.


3

Điều này đã làm việc cho tôi. Tôi chỉ muốn đóng cửa sổ lệnh tự động sau khi thoát khỏi trò chơi. Tôi chỉ cần nhấp đúp vào tệp .bat trên màn hình của mình. Không có phím tắt.

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B

1

Tôi đã có cái này, tôi đã thêm EXITvà ban đầu nó không hoạt động, tôi đoán mỗi yêu cầu called program exitinglời khuyên được đề cập trong một phản hồi khác ở đây, tuy nhiên nó hiện hoạt động mà không cần thêm lời khuyên - không chắc điều gì đã gây ra điều này, nhưng điểm cần lưu ý là tôi gọi một tệp dữ liệu .htmlchứ không phải là chương trình xử lý nó browser.exe, tôi đã không chỉnh sửa bất cứ thứ gì nhưng nó đủ để nói nó nhiều neater chỉ sử dụng một file bat để truy cập các trang truy cập chính của các tài liệu web và chỉ có title.bat, contents.bat, index.battrong thư mục gốc với phần còn lại của nội dung trong một thư mục con.

tức là: content.bat đọc

cd subfolder
"contents.html"
exit

Nó cũng trông đẹp hơn nếu tôi thay đổi các biểu tượng tệp dơi chỉ cho những mục đó cho phù hợp với bối cảnh của chúng, nhưng đó là một vấn đề khác, ẩn tệp dơi trong thư mục con và tạo các phím tắt biểu tượng tùy chỉnh cho chúng trong thư mục gốc với hình ảnh được gọi cho tùy chỉnh cũng bị ẩn.


0

Bạn có thể thử cách hơi nguy hiểm: taskkill /IM cmd.exe..dangerous bcz sẽ giết cmd đang mở và bất kỳ cmd nào được mở trước đó.

Hoặc thêm xác minh để xác nhận rằng bạn có đúng cmd.exe và sau đó giết nó qua PID, chẳng hạn như sau:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

Thay thế (pslist &&A)hoặc (tasklist /FI "PID eq %%A")cho (taskkill /PID %%A)nếu bạn muốn kiểm tra xem nó đầu tiên (và có lẽ đã pstools cài đặt).


0

Chỉ cần thử /snhư được liệt kê bên dưới.

Là dòng cuối cùng trong loại tệp loạt:

exit /s

Lệnh trên sẽ đóng cửa sổ Windows CMD.

/s - là viết tắt của im lặng như trong (nó sẽ đợi nhập liệu từ bàn phím).


1
cmd's thoát lệnh không có một /scông tắc (và nó sẽ là vô nghĩa anyway)
Stephan

-1

Thêm mã này vào cuối mã thực thi

c: \ windows> thoát


1
bạn đã đọc câu cuối cùng của câu hỏi ?:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan

Tôi đã thêm lối ra vào cuối tập lệnh của mình và nó thực sự đã giải quyết được vấn đề của tôi.
Attila
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.