2008-11-27 30 views

Trả lời

135

Bạn có thể sử dụng từ khóa thoát. Dưới đây là một ví dụ từ một trong các tập tin batch của tôi:

start myProgram.exe param1 
exit 
+16

Lưu ý rằng điều này sẽ làm những điều không tốt đẹp nếu bạn đang sử dụng giao diện điều khiển tương tác thay vì chỉ cần kích đúp chuột vào tập tin thực thi. Nói chung có rất ít hoặc không cần phải bao giờ đặt 'thoát' vào một tập tin thực thi. – Joey

+21

Tôi đã thử lệnh này trong Win8. Tôi không chắc chắn nếu nó khác nhau, nhưng lưu ý rằng bạn phải cung cấp nó với một tiêu đề cửa sổ như là 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" như tiêu đề cửa sổ: 'bắt đầu" VPN "" C: \ Program Files (x86) \ Cisco \ Cisco AnyConnect Client \ vpnui.exe "' –

+3

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

50

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

START rest-of-your-program-name 

Ví dụ, đây batch-file 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 
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 chóng.

start "name" /B myprogram.exe param1 
+4

Tùy chọn '" title "' 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, nó phải được bao quanh bởi các dấu ngoặc kép, do đó chúng ta phải thêm '" title "' để tránh thất bại. –

26

Từ own question tôi:

start /b myProgram.exe params... 

công trình nếu bạn khởi động chương trình từ một phiên DOS đang tồn tại.

Nếu không, hãy gọi một kịch bản vb

wscript.exe invis.vbs myProgram.exe %* 

Các Windows Script Host Run() method mất:

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

Đây là invi s.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 có hiệu quả đối với tôi. –

+0

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

0

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

  1. Tạo shortcut cho các chương trình mà bạn muốn chạy;

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

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

  4. Thay đổi trường RUN để thu nhỏ.

Sẵn sàng! Xem cách bạn thích nó ...

PS: 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; chuỗi PROGRAMNAME có thể là tên tệp, đường dẫn tương đối hoặc đường dẫn tuyệt đối - nếu bạn đặt đường dẫn tuyệt đối và xóa ký tự ổ đĩa và dấu chấm phẩy, thì điều này sẽ hoạt động trong ngón tay cái bất kể ký tự mà máy chủ gán cho nó. .. (Ngoài ra, nếu bạn đặt lối tắt trong cùng một thư mục và đặt trước tên tệp chương trình trong PROGRAMNAME với biến số %CD%, đường dẫn sẽ luôn khớp nhau; cùng một mẹo có thể được sử dụng trong trường START IN).

18

Đây là điều duy nhất mà làm việc cho tôi khi tôi cố gắng để chạy một lớp java từ một tập tin batch:

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

Bạn có thể tùy chỉnh các lệnh start như bạn muốn cho dự án của bạn, 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) 
193

Sử dụng lệnh bắt đầu để ngăn tệp hàng loạt chờ chương trình. Chỉ cần nhớ đặt một dấu ngoặc kép trống ở phía 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ừ một lệnh batch:

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

thông báo báo giá gấp đôi sau khi bắt đầu.

+12

Wow ... Bất cứ ai cũng biết tại sao nó hoạt động? – SharkAlley

+49

@SharkAlley Định dạng thích hợp là 'bắt đầu ' – Kruug

+4

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

0

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

Để mở Task Scheduler:

  • Start -> Run/tìm kiếm ->'cmd'
  • Loại taskschd.msc -> nhập

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

Hy vọng điều này sẽ hữu ích.

10

Làm thế nào để giải quyết "vấn đề không gian" và phụ thuộc địa phương:

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

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

exit 
+0

Đâ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ĩ rằng nó đưa ra một giải pháp tốt để giải quyết các vấn đề khác tôi đã có là tốt. – Gilco

+2

Là giải pháp cho tôi. Cửa sổ Dos mở ra nhưng đóng lại và giải pháp hoạt động. Tôi không hiểu các downvotes (tôi upvoted) – JoeFox

0

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

Sử dụng một VBS Script để gọi tập tin thực thi:

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 để một trình soạn thảo và lưu các tập tin với phần mở rộng .VBS.

0

Tôi đã có vấn đề này và sau đây làm việc cho tôi:

run myprogram.exe param1 
Các vấn đề liên quan