Giữ CMD mở sau khi tập tin BAT thực thi


168

Tôi có một tập tin bat như thế này:

ipconfig

Điều đó sẽ in thông tin IP ra màn hình, nhưng trước khi người dùng có thể đọc thông tin đó, CMD sẽ tự đóng lại.

Tôi tin rằng CMD giả sử kịch bản đã hoàn thành, vì vậy nó đóng lại.

Làm cách nào để giữ cho CMD mở sau khi tập lệnh kết thúc?



4
@RobKielty đó là cùng một câu hỏi - nhưng ở đây chúng tôi có một câu trả lời mới (tốt hơn IMHO)
alfasin


@alfasin Điều đó có giống với câu trả lời của Rutger Nijluning không?
Rob Ki mẹo

@RobKielty không, câu trả lời của tôi không giống như nó không sử dụng pause, đó là một cách giải quyết tốt (và đó là lý do tại sao tôi nêu lên câu trả lời này) nhưng không phải là câu trả lời thực sự bởi vì sau khi người dùng nhấn Enterhoặc Spacecửa sổ sẽ đóng. ..
alfasin

Câu trả lời:


162

Tùy thuộc vào cách bạn đang chạy lệnh, bạn có thể đặt /ksau cmdđể giữ cho cửa sổ mở.

cmd /k my_script.bat

Chỉ cần thêm cmd /kvào cuối tập tin bó của bạn cũng sẽ hoạt động. Tín dụng cho Luigi D'Amico đã đăng về điều này trong các ý kiến ​​dưới đây.


14
Sau khi tất cả các tập lệnh của bạn trong tệp bat của bạn - đặt -> cmd / k
Luigi D'Amico

3
Xin lưu ý rằng nếu chương trình của bạn có lỗi cú pháp, cửa sổ sẽ vẫn đóng nếu bạn chạy nó thông qua nhấp đúp chuột và đặt cmd /kở cuối.
Tobias Feil

Điều này không giải thích việc đóng cửa sổ cmd nếu người dùng nhấp đúp vào tệp.
K - Độc tính trong SO đang tăng lên.

237

Đặt pauseở cuối tệp .BAT của bạn.


7
Đây chính xác là những gì tôi đang tìm kiếm, bởi vì tôi đang chạy tập tin bat khi khởi động, không phải thông qua lệnh CMD. +1
Hawkeye

3
Nếu bạn vẫn muốn tương tác với tệp bat sau khi thực hiện, hãy thay thế PAUSE chỉ bằng cmd / k - sau khi tập lệnh của bạn chạy, bạn vẫn có thể chạy các lệnh thủ công sau đó trong cùng bối cảnh
Luigi D'Amico

Tôi không thể chịu được khi thấy đây không phải là "giải pháp" cho câu hỏi này
newhouse

57

Chỉ cần thêm @pausevào cuối.

Thí dụ:

@echo off
ipconfig
@pause

Hoặc bạn cũng có thể sử dụng:

cmd /k ipconfig

5
biểu tượng @ làm gì? Có sự khác biệt giữa @pause và tạm dừng không?
demonicdaron

3
@demonicdaron Trả lời giải thích biểu tượng @: stackoverflow.com/a/21077142/2258
Richard Morgan

Nhưng trong trường hợp này, nó sẽ không làm cho bất kỳ sự khác biệt.
Florian Leit Quay

Sự khác biệt giữa @pausepausecó thể được nhìn thấy một cách trực quan trong câu trả lời này: stackoverflow.com/questions/17957076#60053224
ZygD

7

Thêm pausevào (Windows 7) vào cuối không làm việc cho tôi
nhưng thêm cmd /kvào phía trước lệnh của tôi đã làm việc.

Thí dụ :

cmd /k gradlew cleanEclipse

7

Khi tệp .bat được bắt đầu không nằm trong dòng lệnh (ví dụ: nhấp đúp chuột).

echo The echoed text
@pause

vào lúc

echo The echoed text
pause

tạm ngừng

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

và tạm biệt


3

start cmd /kđã làm điều kỳ diệu cho tôi. Tôi thực sự đã sử dụng nó để chuẩn bị ứng dụng phonegap cordova, nó chạy lệnh, hiển thị kết quả và chờ người dùng đóng nó. Dưới đây là ví dụ đơn giản

start cmd /k echo Hello, World!

Những gì tôi đã sử dụng trong trường hợp của tôi

start cmd /k cordova prepare

Cập nhật

Bạn thậm chí có thể có một tiêu đề cho điều này bằng cách sử dụng

start "My Title" echo Hello, World!


1

Nếu bạn đang bắt đầu tập lệnh trong dòng lệnh, sau đó thêm exit /bđể giữ cho CMD mở


Không thực tế giải quyết câu hỏi vì sửa đổi ipconfigvà các tệp bó tích hợp khác là một ý tưởng rất tồi .
robinCTS

1

Trong Windows, thêm '& Tạm dừng' vào cuối lệnh của bạn trong tệp.


1

Tôi cũng bối rối về lý do tại sao chúng tôi thêm một cmdtừ đầu và tôi đã tự hỏi nếu tôi phải mở dấu nhắc lệnh trước. Những gì bạn cần làm là gõ lệnh đầy đủ cùng với cmd /k. Ví dụ: giả sử tên tệp bó của bạn là "my_command.bat" chạy lệnh javac my_code.javathì mã trong tệp bó của bạn phải là:

cmd /k javac my_code.java

Vì vậy, về cơ bản không cần phải mở dấu nhắc lệnh tại thư mục hiện tại và nhập lệnh trên nhưng bạn có thể lưu mã này trực tiếp trong tệp bó của mình và thực hiện trực tiếp.


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

lệnh thứ hai làm cho cửa sổ cmd của bạn không bị đóng. Điều quan trọng là bạn vẫn có thể nhập lệnh mới


0

Là một sidenote, điều này cũng hoạt động khi chạy một lệnh trực tiếp từ thanh tìm kiếm trong windows.

ví dụ: chạy trực tiếp ipconfigsẽ đóng trực tiếp cửa sổ cmd sau khi lệnh đã thoát.

nhập mô tả hình ảnh ở đây

Sử dụng cmd \k <command>sẽ không - đó là những gì tôi đã cố gắng làm khi tôi tìm thấy câu trả lời này.

nhập mô tả hình ảnh ở đây

Nó có thêm lợi thế là luôn nhận ra lệnh bạn đang cố chạy. Ví dụ: chạy echo hello worldtừ thanh tìm kiếm sẽ không hoạt động vì đó không phải là lệnh, tuy nhiên cmd \k echo hello worldhoạt động tốt.

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.