Làm thế nào tôi có thể chạy một chương trình từ một tệp bó mà không để giao diện điều khiển mở sau khi chương trình bắt đầu?


184

Hiện tại, tệp bó của tôi trông như thế này:

myprogram.exe param1

Chương trình bắt đầu nhưng Cửa sổ DOS vẫn mở. Làm thế nào tôi có thể đóng nó?


3
Bạn có lẽ nên thay đổi câu trả lời được chấp nhận cho câu trả lời của Marshall.
Rev1.0

Câu trả lời:


163

Bạn có thể sử dụng từ khóa thoát. Đây là một ví dụ từ một trong các tệp bó của tôi:

start myProgram.exe param1
exit

18
Lưu ý rằng điều này sẽ không tốt nếu bạn đang sử dụng bảng điều khiển một cách tương tác thay vì chỉ nhấp đúp vào tệp bó. Nói chung, có rất ít hoặc không cần phải đưa exitvào một tệp bó.
Joey

26
Tôi đã thử lệnh này trong Win8. Tôi không chắc nó có khác không, nhưng lưu ý rằng bạn phải cung cấp cho nó một tiêu đề Window làm tham số đầu tiên của bạn. Khi tôi chạy nó theo cách Patrick mô tả, nó sẽ chỉ mở một dấu nhắc lệnh mới với "myProgram.exe" làm tiêu đề cửa sổ:start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Adam Plocher

8
Lưu ý rằng nếu lệnh của bạn chứa khoảng trắng và bạn đặt nó vào dấu ngoặc kép, bạn phải thêm một tham số được trích dẫn thêm trước nó, vì START diễn giải tham số được trích dẫn đầu tiên là tên cửa sổ và chỉ tham số thứ hai dưới dạng tên lệnh.
David Balažic

257

Sử dụng lệnh start để ngăn chặn tệp bó chờ chương trình. Chỉ cần nhớ đặt một trích dẫn kép trống trước chương trình bạn muốn chạy sau "Bắt đầu". Ví dụ: nếu bạn muốn chạy Visual Studio 2012 từ lệnh batch:

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

chú ý báo giá kép sau khi bắt đầu.


55
@SharkAlley Định dạng phù hợp làstart <window name> <program name>
Kruug

5
Đây là câu trả lời chính xác. Cảm ơn, dấu ngoặc kép trống chính xác là những gì tôi cần.
Richard

Tôi có một tập lệnh sao lưu mà tôi chạy hàng tuần và sẽ sửa đổi nó một chút mỗi tuần, cố gắng đưa nó đến một) đóng chương trình của tôi, b) sao lưu dữ liệu của tôi và c) khởi động lại chương trình và đóng dấu nhắc lệnh. Điều này cuối cùng đã có dấu nhắc lệnh để đóng (cũng ngăn không cho sao lưu tiếp theo của tôi kích hoạt, tôi phải đóng dấu nhắc lệnh đó !!!).
NobleUplift

@NobleUplift: Đối với tôi, điều này đã hoạt động, .. bên dưới là dòng chính xác, Bắt đầu "" "C: \ Chương trình tập tin (x86) \ JetBrains \ IntelliJ IDEA 2016.2.5 \ bin \ idea64.exe" &
Xinus

53

Nhìn vào lệnh START, bạn có thể làm điều này:

START rest-of-your-program-name

Chẳng hạn, tệp bó này sẽ đợi cho đến khi thoát notepad:

@echo off
notepad c:\test.txt

Tuy nhiên, điều này sẽ không:

@echo off
start notepad c:\test.txt

31

Từ câu hỏi của riêng tôi :

start /b myProgram.exe params...

hoạt động nếu bạn bắt đầu chương trình từ một phiên DOS hiện có.

Nếu không, hãy gọi một tập lệnh vb

wscript.exe invis.vbs myProgram.exe %*

Phương thức Windows Script Host Run () thực hiện:

  • intWindowStyle: 0 có nghĩa là "cửa sổ vô hình"
  • bWaitOnReturn: false có nghĩa là tập lệnh đầu tiên của bạn không cần đợi tập lệnh thứ hai của bạn kết thúc

Đây là invis.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

1
+1 Có một cách dễ dàng hơn, nhưng đây là câu trả lời duy nhất phù hợp với tôi.
DN

Cảm ơn - cờ / b đó chính xác là những gì tôi đang tìm kiếm.
ap

21

Đây là điều duy nhất làm việc cho tôi khi tôi cố chạy một lớp java từ một tệp bó:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

Bạn có thể tùy chỉnh startlệnh như bạn muốn cho dự án của mình, bằng cách làm theo cú pháp thích hợp:

Syntax
      START "title" [/Dpath] [options] "command" [parameters]

Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command

Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class

   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.

   Options for 16-bit WINDOWS programs only

   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)

18

Bạn nên thử điều này. Nó bắt đầu chương trình không có cửa sổ. Nó thực sự nhấp nháy trong một giây nhưng biến mất khá nhanh.

start "name" /B myprogram.exe param1

4
Các "title"tùy chọn là rất quan trọng. Nếu đường dẫn của chương trình bao gồm các khoảng trắng thì nó phải được đặt trong dấu ngoặc kép, do đó chúng ta phải thêm "title"vào để tránh thất bại.
AD

1
Nếu bạn đóng cửa sổ chính, quá trình nền 'myprogram.exe' cũng sẽ đóng.
Aditya Gupta

14

Cách giải quyết "vấn đề không gian" và phụ thuộc cục bộ:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit

Đây không phải là một câu trả lời cho câu hỏi
jeb

2
đúng, nhưng tôi nghĩ nó cũng là một giải pháp tốt để giải quyết các vấn đề khác mà tôi gặp phải.
Gilco

2
Là giải pháp cho tôi. Cửa sổ Dos mở nhưng đóng lại và giải pháp hoạt động. Tôi không hiểu các downvote (tôi đã nâng cấp)
JoeFox

Tôi cũng vậy. giải pháp hoạt động và giải quyết vấn đề
Gilco

2

Đã có rất nhiều câu trả lời cho câu hỏi này, nhưng tôi đang đăng bài này để làm rõ một điều quan trọng, mặc dù điều này có thể không phải luôn luôn như vậy:

Start "C:\Program Files\someprog.exe"

Có thể gây ra sự cố trong một số phiên bản windows vì Startthực sự mong đợi bộ dấu ngoặc kép đầu tiên là tiêu đề của cửa sổ. Vì vậy, cách tốt nhất là trích dẫn đầu tiên một nhận xét hoặc nhận xét trống:

Start "" "C:\Program Files\someprog.exe"

hoặc là

Start "Window Title" "C:\Program Files\someprog.exe"

0

Giải pháp của tôi để làm điều này từ GUI:

  1. Tạo một lối tắt đến chương trình bạn muốn chạy;

  2. Chỉnh sửa thuộc tính của phím tắt;

  3. Thay đổi TARGETtrường thành %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Thay đổi RUNtrường để giảm thiểu.

Sẵn sàng! Xem bạn thích nó như thế nào ...

PS: Các tham số chương trình có thể được chèn vào giữa hai dấu ngoặc kép cuối cùng; các PROGRAMNAMEchuỗi có thể là một tên tập tin, một người họ hàng hoặc một đường dẫn tuyệt đối - nếu bạn đặt trong một đường dẫn tuyệt đối và xóa các ký tự ổ đĩa và dấu chấm phẩy, thì điều này sẽ làm việc trong một ThumbDrive không có vấn đề gì lá thư chuyển nhượng máy chủ để nó .. . (Ngoài ra, nếu bạn đặt phím tắt trong cùng một thư mục và đặt trước tên tệp chương trình PROGRAMNAMEvới %CD%biến, các đường dẫn sẽ luôn khớp; có thể sử dụng cùng một mẹo trong START INtrường).


0

Nếu tệp bó này là thứ bạn muốn chạy theo lịch trình hoặc luôn luôn; bạn có thể sử dụng công cụ lập lịch trình windows và nó không mở ra trong một cửa sổ khi nó khởi động tệp bó.

Để mở Task Scheduler:

  • Bắt đầu -> Chạy / Tìm kiếm -> 'cmd'
  • Nhập taskschd.msc-> nhập

Từ phía bên phải, nhấp Create Basic Taskvà làm theo các menu.

Hi vọng điêu nay co ich.


0

Đây là giải pháp ưa thích của tôi. Nó được lấy từ một câu trả lời cho một câu hỏi tương tự.

Sử dụng Tập lệnh VBS để gọi tệp bó:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

Sao chép các dòng trên vào một trình soạn thảo và lưu tệp với phần mở rộng .VBS.

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.