Câu trả lời:
Sử dụng START
lệnh để chạy từng chương trình sẽ giúp bạn có được những gì bạn cần:
START "title" [/D path] [options] "command" [parameters]
Mỗi START
lệnh gọi chạy lệnh được đưa ra trong tham số của nó và trả về ngay lập tức, trừ khi được thực hiện bằng một /WAIT
công tắc.
Điều đó áp dụng cho các ứng dụng dòng lệnh. Các ứng dụng không có dòng lệnh sẽ trả về ngay lập tức, vì vậy để chắc chắn, nếu bạn muốn chạy tất cả không đồng bộ, hãy sử dụng START
.
Kết hợp một vài câu trả lời trước, bạn có thể thử start /b cmd /c foo.exe
.
Đối với một ví dụ tầm thường, nếu bạn muốn in ra các phiên bản java / groovy / grails / gradle, bạn có thể thực hiện việc này trong một tệp bó:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Nếu bạn có một cái gì đó giống như Process Explorer (Sysiternals), bạn sẽ thấy một vài cmd.exe con xử lý mỗi tiến trình java (theo các lệnh trên). Đầu ra sẽ in ra màn hình theo bất cứ thứ tự nào họ hoàn thành.
start /b : Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
cmd /c : Carries out the command specified by string and then terminates
echo off
ở đầu, khi bạn thực thi tập lệnh, sẽ ngăn tất cả các lệnh được lặp lại với bàn điều khiển. Điều @
tương tự nhưng chỉ cho lệnh đó. Vì vậy, đôi khi bạn sẽ thấy @echo off
.
Bạn có thể sử dụng lệnh start để sinh ra các tiến trình nền mà không cần khởi chạy các cửa sổ mới:
start /b foo.exe
Quá trình mới sẽ không bị gián đoạn với CTRL-C; bạn chỉ có thể giết nó bằng CTRL-BREAK (hoặc bằng cách đóng cửa sổ hoặc thông qua Trình quản lý tác vụ.)
BREAK
bàn phím ngày nay ở đâu?
Sử dụng lệnh START :
start [programPath]
Nếu đường dẫn đến chương trình chứa khoảng trắng, hãy nhớ thêm dấu ngoặc kép. Trong trường hợp này, bạn cũng cần cung cấp một tiêu đề cho cửa sổ giao diện điều khiển mở
start "[title]" "[program path]"
Nếu bạn cần cung cấp các đối số nối thêm chúng ở cuối (bên ngoài dấu ngoặc kép lệnh)
start "[title]" "[program path]" [list of command args]
Sử dụng tùy chọn / b để tránh mở cửa sổ bảng điều khiển mới (nhưng trong trường hợp đó, bạn không thể làm gián đoạn ứng dụng bằng CTRL-C
Có một tùy chọn thứ ba (và có khả năng dễ dàng hơn nhiều). Nếu bạn muốn tạo ra nhiều phiên bản của một chương trình, sử dụng bộ xử lý lệnh kiểu Unix như Xargs hoặc GNU Parallel có thể làm cho quá trình đó khá đơn giản.
Có một bản sao win32 Xargs được gọi là PPX2 , điều này khá đơn giản.
Ví dụ: nếu bạn muốn chuyển mã một thư mục tệp video, bạn có thể chạy lệnh:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Chọn cách này, dir /b *.mpg
lấy một danh sách các tệp .mpg trong thư mục hiện tại của tôi, |
toán tử chuyển danh sách này thành ppx2, sau đó xây dựng một loạt các lệnh được thực thi song song; 4 tại một thời điểm, như được chỉ định ở đây bởi các -P 4
nhà điều hành. Các -L 1
nhà điều hành nói với ppx2 chỉ gửi một dòng thư của chúng tôi niêm yết để ffmpeg tại một thời điểm.
Sau đó, bạn chỉ cần viết dòng lệnh ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
) và {}
được tự động thay thế cho từng dòng trong danh sách thư mục của bạn.
Nó không được áp dụng phổ biến cho mọi trường hợp, nhưng dễ dàng hơn nhiều so với việc sử dụng các cách giải quyết tệp bó chi tiết ở trên. Tất nhiên, nếu bạn không xử lý danh sách các tệp, bạn cũng có thể chuyển nội dung của tệp văn bản hoặc bất kỳ chương trình nào khác vào đầu vào của pxx2.
Tôi không thể làm gì để làm việc. Cuối cùng, tôi chỉ sử dụng powershell để bắt đầu tập lệnh bat .. đôi khi thậm chí bắt đầu cmd / c không hoạt động không chắc tại sao .. Tôi thậm chí đã thử các công cụ như bắt đầu cmd / c notepad & exit
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
cách cẩn thận. :)