Chương trình khởi chạy tập lệnh hàng loạt của Windows và thoát khỏi bảng điều khiển


90

Tôi có một tập lệnh hàng loạt mà tôi sử dụng để khởi chạy một chương trình, chẳng hạn như notepad.exe. Khi tôi nhấp đúp vào tệp hàng loạt này, notepad khởi động bình thường, nhưng cửa sổ màu đen của cmdngười khởi chạy notepad.exevẫn ở trong nền. Tôi phải làm gì để khởi chạy notepad.exevà làm cho cửa sổ cmd biến mất?

chỉnh sửa : phức tạp hơn cách sử dụng \I.

Các cmdcuộc gọi cygwincygwinbắt đầu notepad. tôi sử dụng

start \I \path\cygwin\bin\bash.exe

và cửa sổ đầu tiên (cmd) biến mất, nhưng cửa sổ thứ hai (\ cygwin \ bin \ bash.exe) vẫn còn trên nền. Trong tập lệnh cygwin tôi đã sử dụng notepad.exe &và sau đó thoát.

Câu trả lời:


204
start "" "%SystemRoot%\Notepad.exe"

Giữ ""ở giữa bắt đầu và đường dẫn ứng dụng của bạn.


Giải thích thêm:

Thông thường, khi chúng tôi khởi chạy một chương trình từ một tệp batch như bên dưới, chúng tôi sẽ có các cửa sổ màu đen ở nền như OP đã nói.

%SystemRoot%\Notepad.exe

Điều này là do Notepad chạy trong cùng một dấu nhắc lệnh (quy trình). Dấu nhắc lệnh sẽ đóng SAU KHI đóng notepad. Để tránh điều đó, chúng ta có thể sử dụng startlệnh để bắt đầu một quá trình riêng biệt như thế này.

start %SystemRoot%\Notepad.exe

Lệnh này ổn miễn là nó không có khoảng trống trong đường dẫn. Để xử lý khoảng trống trong đường dẫn cho trường hợp, chúng tôi đã thêm các "dấu ngoặc kép như thế này.

start "%SystemRoot%\Notepad.exe"

Tuy nhiên, chạy lệnh này sẽ chỉ bắt đầu một dấu nhắc lệnh trống khác. Tại sao? Nếu bạn tìm kiếm start /?, startlệnh sẽ nhận ra đối số giữa "là tiêu đề của dấu nhắc lệnh mới mà nó sẽ khởi chạy. Vì vậy, để giải quyết điều đó, chúng ta có lệnh như sau:

start "" "%SystemRoot%\Notepad.exe"

Đối số đầu tiên của ""là đặt tiêu đề (mà chúng tôi đặt là trống) và đối số thứ hai "%SystemRoot%\Notepad.exe"là lệnh đích để chạy (hỗ trợ khoảng trắng trong đường dẫn).

Nếu bạn cần thêm các tham số vào lệnh, chỉ cần nối chúng được trích dẫn, tức là:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 

12
lưu ý: khi bạn muốn bắt đầu một file java jar cách này, hãy chắc chắn để sử dụng javawthực thi (không chỉ javajavasẽ bắt đầu một cửa sổ hàng loạt): ví dụstart "" "javaw" -jar C:\JavaProject\myApp.jar
TmTron

@checksum Vui lòng mở rộng ví dụ của bạn về cách chuyển hướng lỗi chuẩn và đầu ra chuẩn của ứng dụng được khởi động?
Starfish

@Starfish Tôi nghĩ notepad không có stdout và stderr. Nhưng đối với câu hỏi của bạn, nó sẽ như thế nào application.exe > stdout.txt 2>stderr.txt. Thêm câu hỏi của bạn vào câu trả lời ở trên sẽ sai lệch so với câu hỏi của người đăng ban đầu. Có thể bạn có thể bắt đầu một câu hỏi mới để hỏi chi tiết hơn.
tổng kiểm tra

1
Giải pháp hoàn toàn vô nghĩa. Windows lại chiến thắng.
Ярослав Рахматуллин

9

Sử dụng start notepad.exe.

Thêm thông tin với start /?.


1
Và chính xác là đối số nào? /B? Tôi đã đọc nó, nhưng nếu tôi sử dụng start /B notepad.execửa sổ cmd không biến mất.
Possa

Ok, phức tạp hơn cách sử dụng \I. Cmd gọi cygwin, và cygwin bắt đầu notepad. Tôi sử dụng start \I cygwinvà cửa sổ đầu tiên biến mất, nhưng cửa sổ thứ hai vẫn còn trên nền. Trong tập lệnh cygwin tôi đã sử dụng notepad.exe &và sau đóexit
Possa

cygstart khởi động notepad, nhưng bảng điều khiển vẫn ở chế độ nền.
Possa

5

Cách đơn giản nhất là bắt đầu nó với start

start notepad.exe

Tại đây bạn có thể tìm thêm thông tin vềstart


4

%ComSpec% /c %systemroot%\notepad.exe


điều này không đóng cửa sổ cmd%ComSpec% /c emacs.exe "-rv" "--no-splash"
jcubic

0

Rất tiếc ... tôi làm điều đó trong một trong các tệp hàng loạt của mình như thế này, mà không sử dụng CALL hoặc START:

%SystemRoot%\notepad.exe ..\%URI%
GOTO ENDF

Tuy nhiên, tôi chưa cài đặt Cygwin và tôi đang sử dụng Windows XP.


Có lỗi "The system cannot find the batch label specified - ENDF"trên Windows 10
jcubic

0
start "" ExeToExecute

Phương thức này không hoạt động đối với tôi trong trường hợp của Xilinx xsdk, vì như được chỉ ra bởi @jeb trong các nhận xét bên dưới, nó thực sự là một tệp dơi.

vì vậy những gì không hoạt động trên thực tế là

start "" BatToExecute

Tôi đang cố gắng mở xsdk như vậy và nó mở ra một cmd riêng cần được đóng lại và xsdk có thể tự chạy

Trước khi khởi chạy xsdk, tôi chạy (nguồn) Env / Paths (với settings64.bat ) để lệnh xsdk.bat được nhận dạng (đơn giản là xsdk, không có .bat )

những gì hoạt động với .bat

call BatToExecute

2
Điều này có thể trả lời một câu hỏi, nhưng không phải câu hỏi này. Câu hỏi là về cách khởi động tệp .exe ( notepad.exe) bằng cách tách nó khỏi cmd.exe. Bạn trả lời cách khởi động tệp .bat trong cùng một trường hợp
jeb

-4

Cố gắng bắt đầu path\to\cygwin\bin\bash.exe


1
Điều này không thực sự trả lời câu hỏi OPs. Anh ấy không hỏi làm thế nào để bắt đầu cygwin.
Jeremy J Starcher 10/11/12
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.