
Phiên Hỏi & Đáp hôm nay đến với chúng tôi theo lịch sự của SuperUser - một phân khu của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.
Câu hỏi
Người đọc SuperUser Jake muốn chạy một tệp BAT vô hình, anh viết:
I have installed a ruby gem called Redcar, which is launched from the command line. When it runs, it steals the shell until it terminates, so I have to create a new shell window to continue doing command line work. The shell I’m using is the GITBash shell from MySysGit.
I found a Redcar.bat file which is meant to launch Redcar as a shortcut, I presume, but I don’t want the extra command prompt window to open whenever I launch the BAT file.
How do I just run the BAT without seeing the prompt?
Có một giải pháp cho mong muốn kịp thời của Jake không?
Những câu trả lời
Người đóng góp của SuperUser Afrazier phản hồi với sự kết hợp của tin xấu và tốt:
You can’t - executing a batch file with the built in Command Prompt is going to keep a window open until the batch file exits.
What you can do is take steps to make sure that the batch file exits as quickly as possible. If at all possible, modify the batch file to run whatever program with the
start
chỉ huy. Theo mặc định,
start
trả về ngay lập tức mà không cần chờ chương trình thoát, do đó, tập tin batch sẽ tiếp tục chạy và, có lẽ, thoát ngay lập tức. Cặp vợ chồng có chỉnh sửa phím tắt của bạn để chạy tệp hàng loạt được thu nhỏ và bạn sẽ chỉ thấy đèn flash trên thanh tác vụ mà không cần nhìn thấy cửa sổ trên màn hình.
Một lưu ý cho điều này là nếu bạn đang chạy chương trình chế độ bảng điều khiển, có nhiều trình thông dịch tập lệnh, tệp lô sẽ chờ chương trình thoát và sử dụng
start
sẽ sinh ra một cửa sổ giao diện điều khiển mới. Những gì bạn cần làm trong trường hợp này là chạy phiên bản dựa trên Windows của trình thông dịch thay vì phiên bản dựa trên bàn điều khiển - không
start
cần thiết. Đối với Perl, bạn sẽ chạy
wperl.exe
thay vì
perl.exe
. Đối với Python, đó là
pythonw.exe
thay vì
python.exe
. Bản phân phối win32 Ruby cũ mà tôi đã tải xuống có
rubyw.exe
, nên làm điều tương tự.
Một khả năng cuối cùng là sử dụng một công cụ của bên thứ ba để chạy dấu nhắc lệnh với một cửa sổ ẩn. Tôi đã nghe nói về những điều như vậy nhưng chưa bao giờ sử dụng chúng, vì vậy tôi không biết bất cứ điều gì đặc biệt để chỉ cho bạn.
Người đọc cũng chỉ cho anh ta một chuỗi siêu người dùng khác làm nổi bật cách bạn có thể sử dụng Visual Basic Script để vượt ra ngoài việc giảm thiểu khả năng hiển thị và hoàn toàn ẩn dấu nhắc CMD. Trong chủ đề đó, Harry MC giải thích:
Solution 1:
Save this one line of text as file
invisible.vbs
:
CreateObject (“Wscript.Shell”). Chạy “””” & WScript.Arguments (0) & “”””, 0, Sai
Để chạy bất kỳ tệp chương trình hoặc tập tin thực thi nào, hãy sử dụng nó như sau:
wscript.exe "C: Bất cứ nơi nào invisible.vbs" "C: Một số nơi khác MyBatchFile.bat"
Để có thể truyền / chuyển tiếp một danh sách các đối số chỉ sử dụng hai dấu ngoặc kép
CreateObject ("Wscript.Shell"). Chạy "" & WScript.Arguments (0) &"", 0, Sai
ví dụ: Invisible.vbs “Kill.vbs ME.exe”
Giải pháp 2:
Sử dụng công cụ dòng lệnh để tự động khởi chạy quy trình: Yên lặng.
Sử dụng bất kỳ giải pháp nào ở trên, dựa trên mức độ thoải mái của bạn bằng cách sử dụng VBS và các công cụ của bên thứ ba hay không, sẽ giảm thiểu mức độ hiển thị của cửa sổ CMD hoặc hoàn toàn loại bỏ nó.
Có cái gì để thêm vào lời giải thích? Âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange có hiểu biết công nghệ khác? Xem toàn bộ chuỗi thảo luận tại đây.