Tôi có thể chạy tệp Batch Windows mà không cần nhắc lệnh hiển thị không?
Các tệp hàng loạt là một cách thuận tiện để thực thi một loạt các lệnh trong Windows, nhưng liệu có cách nào để chạy chúng vô hình trong nền không? Đọc để tìm hiểu làm thế nào.
Phiên hỏi và trả lời hôm nay đến với chúng tôi nhờ sự hỗ trợ của SuperUser - một phân ngành của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều khiển.
Câu hỏi
Người đọc SuperUser Jake muốn chạy một tệp BAT một cách vô hình, anh viết:
Tôi đã cài đặt một viên ngọc ruby tên là Redcar, được khởi chạy từ dòng lệnh. Khi nó chạy, nó đánh cắp shell cho đến khi nó kết thúc, vì vậy tôi phải tạo một cửa sổ shell mới để tiếp tục thực hiện công việc dòng lệnh. Shell tôi đang sử dụng là shell GITBash từ MySysGit.
Tôi đã tìm thấy một tệp Redcar.bat có nghĩa là để khởi chạy Redcar như một lối tắt, tôi đoán vậy, nhưng tôi không muốn cửa sổ nhắc lệnh thêm mở ra bất cứ khi nào tôi khởi chạy tệp BAT.
Làm thế nào để tôi chỉ chạy BAT mà không thấy dấu nhắc?
Có giải pháp nào cho ham muốn nhanh chóng lén lút của Jake không?
Những câu trả lời
Người đóng góp cho SuperUser Afrazier trả lời bằng sự kết hợp giữa tin xấu và tin tốt:
Bạn không thể - thực thi một tệp bó với Dấu nhắc lệnh được tích hợp sẽ giữ cho một cửa sổ mở cho đến khi tệp bó thoát ra.
Những gì bạn có thể làm là thực hiện các bước để đảm bảo rằng tệp bó thoát ra càng nhanh càng tốt. Nếu có thể, hãy sửa đổi tệp bó để chạy bất kỳ chương trình nào với
khởi đầu
chỉ huy. Theo mặc định,khởi đầu
trả về ngay lập tức mà không cần đợi chương trình thoát, vì vậy tệp bó sẽ tiếp tục chạy và có lẽ là thoát ngay lập tức. Kết hợp với việc sửa đổi lối tắt của bạn để chạy tệp bó được thu nhỏ và bạn sẽ chỉ thấy thanh tác vụ nhấp nháy mà không 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, thì tệp bó sẽ chờ chương trình thoát ra và sử dụng
khởi đầu
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 trình thông dịch dựa trên Windows thay vì phiên bản dựa trên bảng điều khiển - khôngkhởi đầu
cần thiết. Đối với Perl, bạn sẽ chạywperl.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ự.Khả năng cuối cùng là sử dụng công cụ của bên thứ 3 để chạy dấu nhắc lệnh với 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ụ thể để chỉ cho bạn.
Người đọc cũng chỉ cho anh ta một luồng SuperUser khác nêu 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 của CMD. Trong chủ đề đó, Harry MC giải thích:
Giải pháp 1:
Lưu một dòng văn bản này dưới dạng tệp
vô hình.vbs
:TạoObject (Thời gian Wscript.Shell). Chạy trong phạm vi Bí mật & WScript.Argument (0) & Hồi sinh Trả lời, 0, Sai
Để chạy bất kỳ chương trình hoặc tệp bó nào vô hình, hãy sử dụng nó như thế này:
wscript.exe F C: \ Bất cứ nơi nào \ vô hình.vbs Quảng C C: \ Một số nơi khác \ MyBatchFile.bat,
Để cũng 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
TạoObject (Tiếng Wscript.Shell,) Chạy Chạy Biệt & WScript.Argument (0) & Lời ăn, 0, Sai
vd: Invisible.vbs vào Kill.vbs ME.exe
Giải pháp 2:
Sử dụng công cụ dòng lệnh để âm thầm khởi chạy một 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ẽ làm giảm tối thiểu khả năng hiển thị của cửa sổ CMD hoặc loại bỏ hoàn toàn nó.
Có một cái gì đó để thêm vào lời giải thích? Tắt â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 am hiểu công nghệ khác? Kiểm tra chủ đề thảo luận đầy đủ ở đây.