File BAT: Buka jendela cmd baru dan jalankan perintah di sana


163

Saya mencoba membuka jendela perintah baru di file BAT:

start %windir%\system32\cmd.exe

Setelah terbuka, saya ingin menjalankan perintah BAT di jendela baru:

echo "test in new window"

Bagaimana saya bisa melakukan ini?

Jawaban:


263

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.


2
Jika Anda menggunakan ini untuk menjalankan server rail, Anda sebenarnya tidak perlu mengetik cmd. Anda cukup mengetik start rails s.
fbonetti

86

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


13

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.


11

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"

7

Terima kasih untuk semuanya di Stack Overflow; solusi ini menyelesaikan pertanyaan di atas tetapi diperluas untuk secara otomatis menjalankan tugas-tugas ini:

  1. Saya ingin menjalankan server rel saya
  2. Jalankan pekerjaan menyapu: pekerja untuk permata delay_job saya juga
  3. dan Buka browser internet default untuk menampilkan halaman saya
  4. Akhirnya, untuk meninggalkan sebuah jendela cmd terbuka untuk setiap perintah ekstra selama sesi saya.

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.


2

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.


2

untuk menjalankan file python di jendela cmd baru dengan spasi di nama file:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"

0

Menambahkan antara dua perintah menjalankan kedua perintah ./k in order

Contoh:

cmd /k echo "hello"

perintah ini akan terbuka pertama command promptkemudian jalankan echo "hello"perintah

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.