Jawaban:
Anda mungkin sudah menemukan jawaban Anda karena beberapa waktu yang lalu Anda bertanya. Tapi saya mencoba melakukan sesuatu yang mirip ketika coding ror. Saya ingin menjalankan "rails server" di jendela cmd baru jadi saya tidak perlu membuka cmd baru dan kemudian menemukan jalan saya lagi.
Apa yang saya temukan adalah menggunakan saklar K seperti ini:
start cmd /k echo Hello, World!
mulai sebelum "cmd" akan membuka aplikasi di jendela baru dan "/ K" akan menjalankan "echo Hello, World!" setelah cmd baru habis.
Anda juga dapat menggunakan sakelar / C untuk sesuatu yang serupa.
start cmd /C pause
Ini kemudian akan menjalankan "jeda" tetapi tutup jendela ketika perintah selesai. Dalam hal ini setelah Anda menekan tombol. Saya menemukan ini berguna untuk "rails server", maka ketika saya mematikan server dev saya tidak perlu menutup jendela setelahnya.
Gunakan yang berikut ini di file batch Anda:
start cmd.exe /k "more-batch-commands-here"
atau
start cmd.exe /c "more-batch-commands-here"
/ c Melakukan perintah yang ditentukan oleh string dan kemudian mengakhiri
/ k Melakukan perintah yang ditentukan oleh string tetapi tetap
Baca dokumentasi cmd.exe menggunakan cmd /?
untuk rincian lebih lanjut.
Pemformatan yang tepat dari string perintah menjadi sedikit lebih rumit dengan spasi dalam argumen. Lihat contoh di bawah ini. Perhatikan penggunaan tanda kutip ganda bersarang dalam beberapa contoh.
Contoh:
Jalankan program dan berikan parameter nama file:
CMD /c write.exe c:\docs\sample.txt
Jalankan program dan berikan nama file yang panjang:
CMD /c write.exe "c:\sample documents\sample.txt"
Spaces di jalur program:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Spasi dalam parameter jalur program +:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
Luncurkan demo1 dan demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
Sumber: http://ss64.com/nt/cmd.html
Ini tidak mudah.
Pendekatan terbaik adalah memiliki bagian skrip Anda yang ingin dieksekusi di "jendela baru" untuk berada di file .bat yang terpisah. Ini mungkin tidak praktis jika misalnya Anda memerlukan banyak status dari sisa skrip Anda (variabel, dll). Salah satu opsi adalah meneruskan nilai apa pun yang Anda perlukan (mis. Dir untuk beroperasi di) ke file batch:
start cmd.exe stuff.bat %this_dir%
Jika Anda memiliki banyak negara untuk mengirimkan, Anda mungkin mempertimbangkan untuk membuat file batch saat runtime:
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%"
Jelas ini adalah contoh sepele.
Jawaban di atas membantu saya. Tapi masih perlu mencari tahu. Berikut ini contoh skrip yang saya gunakan untuk memulai 3 proses untuk pengembangan web. Ini menghasilkan 3 jendela tetap terbuka, karena mereka harus berjalan terus menerus.
Mongo ditambahkan secara global ke jalur saya, jadi saya tidak perlu melakukan cd seperti yang saya lakukan untuk dua program lainnya. Tentu saja jalur ke file Anda akan bervariasi, tetapi mudah-mudahan ini akan membantu.
:: 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"
Terima kasih untuk semuanya di Stack Overflow; solusi ini menyelesaikan pertanyaan di atas tetapi diperluas untuk secara otomatis menjalankan tugas-tugas ini:
Saya kira proyek saya disebut "antiquorum."
Buat file "init.bat" di direktori % USERPROFILE% Anda (buka jendela cmd dan lihat path di sebelah kiri kursor untuk mengetahui apa% USERPROFILE% itu)
@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
Di jendela baris perintah baru ketik: C:> init antiquorum
Kode ini membuka dua lagi jendela cmd dan sebuah browser. TIMEOUT menghindari kesalahan pada browser.
Bagian : mulai bekerja. Anda dapat menjalankan tugas 1,2 atau 4 secara terpisah dengan mengetikkan params sebagai: server , pekerja , atau tidak ada yang membiarkan cmd dibuka di root dari proyek "antiquorum" .
Nikmati.
Jika saya mengerti Anda melakukan ini dengan benar di samping file bat Anda akan membuka Command prompt dan mencetak pesan Anda ke layar.
cmd.exe hello world
semoga ini membantu.
Menambahkan antara dua perintah menjalankan kedua perintah ./k
in order
Contoh:
cmd /k echo "hello"
perintah ini akan terbuka pertama command prompt
kemudian jalankan echo "hello"
perintah
cmd
. Anda cukup mengetikstart rails s
.