Câu trả lời:
Bạn có thể đã tìm thấy câu trả lời của bạn bởi vì đó là một thời gian trước bạn đã hỏi. Nhưng tôi đã cố gắng làm một cái gì đó tương tự khi mã hóa ror. Tôi muốn chạy "rails server" trong cửa sổ cmd mới vì vậy tôi không phải mở cmd mới và sau đó tìm lại đường dẫn của mình.
Những gì tôi phát hiện ra là sử dụng công tắc K như thế này:
start cmd /k echo Hello, World!
bắt đầu trước khi "cmd" sẽ mở ứng dụng trong một cửa sổ mới và "/ K" sẽ thực thi "echo Hello, World!" sau khi cmd mới lên.
Bạn cũng có thể sử dụng công tắc / C cho một cái gì đó tương tự.
start cmd /C pause
Điều này sau đó sẽ thực hiện "tạm dừng" nhưng đóng cửa sổ khi lệnh được thực hiện. Trong trường hợp này sau khi bạn nhấn một nút. Tôi thấy điều này hữu ích cho "rails server", sau đó khi tôi tắt máy chủ dev, tôi không phải đóng cửa sổ sau.
Sử dụng như sau trong tệp bó của bạn:
start cmd.exe /k "more-batch-commands-here"
hoặc là
start cmd.exe /c "more-batch-commands-here"
/ c Thực hiện lệnh được chỉ định bởi chuỗi và sau đó chấm dứt
/ k Thực hiện lệnh được chỉ định bởi chuỗi nhưng vẫn còn
Tham khảo tài liệu cmd.exe bằng cách sử dụng cmd /?
để biết thêm chi tiết.
Việc định dạng đúng của chuỗi lệnh trở nên phức tạp hơn một chút với khoảng trắng trong các đối số. Xem các ví dụ dưới đây. Lưu ý việc sử dụng dấu ngoặc kép lồng nhau trong một số ví dụ.
Ví dụ:
Chạy một chương trình và truyền tham số tên tệp:
CMD /c write.exe c:\docs\sample.txt
Chạy một chương trình và vượt qua một tên tệp dài:
CMD /c write.exe "c:\sample documents\sample.txt"
Dấu cách trong đường dẫn chương trình:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Không gian trong đường dẫn chương trình + tham số:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
Khởi chạy demo1 và demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
Nguồn: http://ss64.com/nt/cmd.html
Điều này không phải là rất dễ dàng.
Cách tiếp cận tốt nhất là để phần kịch bản của bạn mà bạn muốn được thực thi trong "cửa sổ mới" ở trong một tệp .bat riêng biệt. Điều này có thể không thực tế nếu ví dụ: bạn cần rất nhiều trạng thái từ phần còn lại của tập lệnh (biến, v.v.). Một tùy chọn là chuyển bất kỳ giá trị nào bạn cần (ví dụ: dir để hoạt động) vào tệp bó:
start cmd.exe stuff.bat %this_dir%
Nếu bạn có một lượng lớn trạng thái để truyền, bạn có thể xem xét việc tạo một tệp bó trong thời gian chạy:
set foo=Hello, World
set list_me=%userprofile%
set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo
del /q /f "%tmp%"
echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"
start cmd.exe "%tmp%"
del /q /f "%tmp%"
Rõ ràng đây là một ví dụ tầm thường.
Các câu trả lời trên đã giúp tôi. Nhưng vẫn cần một số tìm ra. Dưới đây là một kịch bản ví dụ tôi sử dụng để bắt đầu 3 quy trình phát triển web. Kết quả là 3 cửa sổ vẫn mở, vì chúng cần phải chạy liên tục.
Mongo được thêm vào toàn cầu vào con đường của tôi, vì vậy tôi không cần phải cd như tôi làm cho hai chương trình khác. Tất nhiên đường dẫn đến các tệp của bạn sẽ thay đổi, nhưng hy vọng điều này sẽ giúp ích.
:: Start MongoDB
start cmd.exe /k "mongod"
:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"
:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"
Cảm ơn tất cả ở đây trong Stack Overflow; giải pháp này giải quyết câu hỏi trên nhưng được mở rộng để tự động chạy các tác vụ sau:
Tôi đoán dự án của tôi được gọi là "antiquorum."
Tạo tệp "init.bat" trong thư mục % USERPROFILE% của bạn (mở cửa sổ cmd và xem đường dẫn ở bên trái của con trỏ để biết% USERPROFILE% là gì)
@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
start cmd /k %USERPROFILE%\init.bat worker
start cmd /k %USERPROFILE%\init.bat server
TIMEOUT 30
start "" "http://localhost:3000/"
GOTO end
:server
rails s
GOTO end
:worker
rake jobs:work
:end
Trong cửa sổ dòng lệnh mới, gõ: C:> init antiquorum
Mã mở thêm hai cửa sổ cmd và trình duyệt. THỜI GIAN tránh lỗi trong trình duyệt.
Phần : bắt đầu làm công việc. Bạn có thể chạy các tác vụ 1,2 hoặc 4 riêng biệt bằng cách nhập params như: server , worker hoặc none để để một cmd được mở trong root của dự án "antiquorum" .
Thưởng thức.
Nếu tôi hiểu bạn thực hiện chính xác điều này trong tập tin bat của bạn sẽ mở Dấu nhắc lệnh và in thông báo của bạn ra màn hình.
cmd.exe hello world
hi vọng điêu nay co ich.
Thêm vào giữa hai lệnh thực thi cả hai lệnh ./k
in order
Thí dụ:
cmd /k echo "hello"
Lệnh này trước tiên sẽ mở command prompt
sau đó thực thi echo "hello"
lệnh
cmd
. Bạn chỉ có thể gõstart rails s
.