Başka bir cmd.exe isteminden yeni bir cmd.exe penceresi oluşturun


104

CruiseControl.NET kurulum sürecindeyim. Yaşadığım sorun şu ki, CC'yi bir konsol uygulaması olarak çalıştırıyorum ve derlemem başarıyla tamamlandığında ve çalıştırıldığında (exec kullanarak) CruiseControl DOS komut isteminde başlatıyor. Uygulamamı başlatmak için sadece basit toplu dosyalar kullanıyorum ancak CC ile aynı komut isteminde çalıştırılması, CC'nin uygulamam çalıştığı sürece derlemenin devam ettiğini düşünmesine neden oluyor.

cmd.exeBaşka bir ayrı bilgi istemi penceresi oluşturacak komut satırı parametreleri var mı?


1
cmd.exe bir GUI değil, bir CUI kabuğudur. Pencere oluşturmaz. Konsol ana bilgisayar işlemi olan conhost.exe'nin bir örneği tarafından oluşturulan ve yönetilen bir konsol penceresi kullanır. Bir CUI programı normal olarak başlatılırsa, temel istemci DLL'sindeki (kernel32.dll veya kernelbase.dll) başlatma kodu, oluşturma bayrağıyla başlatılmadığı sürece DETACHED_PROCESS(yani konsol yok) , varsa üst kuruluşun konsolunu devralır veya yeni bir konsol tahsis eder. . Oluşturma bayrağıyla başlatılmışsa CREATE_NEW_CONSOLE(CMD'nin startkullandığı gibi), temel DLL her zaman üst öğenin mirasını almak yerine yeni bir konsol tahsis eder.
Eryk Sun

Yanıtlar:


204

Bunun işe yaradığını düşünüyorum:

start cmd.exe

5
"start /?" için tüm farklı seçenekleri kontrol ettiğinizden emin olun. / bekleyin ve / ben yararlı olabilirim.
Peter Gfader

50
fwiw, başladıktan sonra 'cmd.exe'yi bile koymanız gerekmez. sadece 'başla' kelimesi yeterli olacaktır.
JustJeff

start / d <path> Yeni cmd penceresi için yol belirlemek isteyenler için. Burada ayrıntılı açıklama.
anton.mo

57

İşte ihtiyacınız olan kod:

start cmd.exe @cmd /k "Command"

11
Ne @cmdyapıyorsun Bunun için bazı belgeler var mı?
michas

1
@normalde bilgi isteminde görünen ancak komut yine de çalıştırılacak olan doğrudan çıktıyı bastırır.
Thielicious

Bunu kullandım, işe yarıyor ama ctrl + c klavye interrupt'ı ile çalışan programı öldürmeye çalışırsanız, çalışan program durmuyor. Yalnızca yeni açılan komut istemi penceresini kapattığınızda durur.
Sachin G.

Kullanan çok satırlı komutlar için çalışmaz ^. :(
Bununla

34

startKomut istemine yazmanız yeterlidir :

start

Bu yeni cmdpencereler açacaktır .


22
start cmd.exe 

ayrı bir pencere açar

start file.cmd 

toplu iş dosyasını açar ve başka bir komut isteminde yürütür


3

Bu 3 komutu komut isteminden yazabilirsiniz:

  1. start

  2. start cmd

  3. start cmd.exe


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

Herhangi bir cmd dosya türü oluşturmak için tek yapmanız gereken içeriği .bat olarak kaydetmek, yani

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

Bunu bir "example.bat" dosyası haline getirin, kaydedin, ardından açın ve çalıştırın.


1

yarasa dosyanıza basit bir şekilde yazın

@cmd

veya

@cmd /k "command1&command2"

4
&Yeni istemde birden çok komut yürüttüğünüz için teşekkür ederiz . Eklemeyi seviyorum, exitböylece komutun çalışması bittiğinde istemi kapatır.
Sylhare

0

Ayrıca CCNET görevinin sonunda daemon sürecini / sunucusunu çalıştıran toplu iş dosyasını çalıştırmayı denedim; CruiseControl'ün, sürecin sonunu beklemeden bağımsız bir eşzamansız süreç oluşturmasını sağlamanın tek yolu şudur:

  1. daemon sürecini çalıştırmak için bir toplu iş dosyası oluşturun (sunucu uygulaması)
  2. toplu iş dosyasını CCNET görevi olarak çalıştırmak için görev zamanlayıcıyı kullanın (schtasks.exe kullanarak)

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

ccnet başlangıcında süreci sonlandırmanız gerekebilir

Not: "start cmd.exe" kullanılarak seçilen yanıt çalışmıyor; gerçekten yeni bir komut istemi oluşturulur, ancak CCNET, oluşturulan cmd'nin bitmesini bekleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.