Buat jendela cmd.exe baru dari dalam prompt cmd.exe lain

102

Saya sedang dalam proses menyiapkan CruiseControl.NET. Masalah yang saya alami adalah saya menjalankan CC sebagai aplikasi konsol dan ketika build saya berhasil diselesaikan dan dijalankan (menggunakan exec), ia meluncurkannya dalam prompt DOS CruiseControl. Saya hanya menggunakan file batch sederhana untuk meluncurkan aplikasi saya tetapi menjalankannya dalam prompt yang sama dengan CC menyebabkan CC berpikir bahwa build akan terus berlanjut selama aplikasi saya berjalan.

Apakah ada parameter baris perintah cmd.exeyang akan memunculkan jendela prompt terpisah lainnya?

Mark Stahler
sumber
1
cmd.exe adalah shell CUI, bukan GUI. Itu tidak membuat jendela. Ini menggunakan jendela konsol yang dibuat dan dikelola oleh contoh conhost.exe, proses host konsol. Jika program CUI dimulai secara normal, kode inisialisasi di klien dasar DLL (kernel32.dll atau kernelbase.dll) mewarisi konsol induk, jika ada, atau mengalokasikan konsol baru, kecuali jika dimulai dengan bendera pembuatan DETACHED_PROCESS(yaitu tidak ada konsol) . Jika dimulai dengan bendera kreasi CREATE_NEW_CONSOLE(seperti yang startdigunakan CMD ), DLL basis selalu mengalokasikan konsol baru alih-alih mewarisi konsol induk.
Eryk Sun

Jawaban:

201

Saya pikir ini berhasil:

start cmd.exe
e. James
sumber
5
pastikan Anda memeriksa semua opsi berbeda untuk memulai "start /?" / tunggu dan / saya bisa berguna.
Peter Gfader
47
Yah, Anda bahkan tidak perlu meletakkan 'cmd.exe' setelah memulai. hanya kata 'mulai' yang akan melakukannya.
JustJeff
start / d <path> Bagi mereka yang ingin mengatur path untuk jendela cmd baru. Berikut penjelasan rinci.
anton.mo
56

Ini kode yang Anda butuhkan:

start cmd.exe @cmd /k "Command"
xsukax
sumber
10
Apa adalah @cmdlakukan? Apakah ada dokumentasi untuk itu?
michas
1
@menekan output langsung yang biasanya akan muncul di prompt tetapi perintah akan tetap dijalankan.
Thielicious
Saya menggunakan ini, itu berhasil tetapi jika mencoba untuk mematikan program yang sedang berjalan dengan keyboard interrupt ctrl + c, program yang sedang berjalan tidak berhenti. Ini hanya berhenti ketika Anda menutup jendela prompt perintah yang baru dibuka.
Sachin G.
Tidak berfungsi untuk menggunakan perintah multi-baris ^. :( Ada cara untuk menangani ini?
user2173353
32

Cukup ketik startdi command prompt:

start

Ini akan membuka cmdjendela baru .

Esterlinkof
sumber
22
start cmd.exe 

membuka jendela terpisah

start file.cmd 

membuka file batch dan menjalankannya di command prompt lain

BlackMael
sumber
2

Anda cukup mengetik 3 perintah ini dari command prompt:

  1. start

  2. start cmd

  3. start cmd.exe

Jagadeesh HN
sumber
2
START "notepad.exe"
echo Will launch the notepad.exe application
PAUSE

Untuk membuat jenis file cmd, yang harus Anda lakukan adalah menyimpan konten sebagai .bat, yaitu

@echo
TITLE example.bat
PAUSE
taskkill/IM cmd.exe

Buat itu menjadi file "example.bat", simpan, lalu buka dan jalankan.

Michael
sumber
1

tulis sederhana di file bat Anda

@cmd

atau

@cmd /k "command1&command2"
bajie
sumber
4
Terima kasih telah &menjalankan beberapa perintah di prompt baru. Saya suka menambahkan exitsehingga menutup prompt ketika perintah selesai dijalankan.
Sylhare
0

Saya juga mencoba menjalankan file batch yang menjalankan proses / server daemon di akhir tugas CCNET; Satu-satunya cara untuk membuat CruiseControl menelurkan proses asinkron independen TANPA menunggu akhir proses adalah:

  1. buat file batch untuk menjalankan proses daemon (aplikasi server)
  2. gunakan penjadwal tugas untuk menjalankan file batch sebagai tugas CCNET (menggunakan schtasks.exe)

    schtasks.exe /create /F /SC once /ST 08:50 /TN TaskName /TR "c:/path/to/batchFileName.bat"
    
    • 08:50 adalah format waktu HH: MM

Anda mungkin perlu menghentikan proses di awal ccnet

NB: jawaban yang dipilih menggunakan "mulai cmd.exe" tidak berfungsi; prompt perintah baru memang muncul, tetapi CCNET akan menunggu cmd yang muncul selesai.

layang-layang
sumber