BAT dosyası: Yeni cmd penceresi açın ve orada bir komut yürütün


164

Bir BAT dosyasında yeni bir komut penceresi açmaya çalışıyorum:

start %windir%\system32\cmd.exe

Açıldıktan sonra yeni pencerede bir BAT komutu yürütmek istiyorum:

echo "test in new window"

Bunu nasıl yapabilirim?

Yanıtlar:


263

Cevabınızı zaten bulabilirsiniz çünkü bir süre önce sordunuz. Ama ben ror kodlarken benzer bir şey yapmaya çalıştım. Ben yeni bir cmd açmak ve sonra tekrar yolumu bulmak zorunda değilsiniz yeni bir cmd penceresinde "raylar sunucusu" çalıştırmak istedim.

Ne buldum K anahtarını böyle kullanmak oldu:

start cmd /k echo Hello, World!

"cmd" uygulamayı yeni bir pencerede açacak ve "/ K" "echo Merhaba, Dünya!" yeni cmd dolduktan sonra.

Benzer bir şey için / C anahtarını da kullanabilirsiniz.

start cmd /C pause

Bu daha sonra "duraklat" işlemini yürütür ancak komut tamamlandığında pencereyi kapatır. Bu durumda bir düğmeye bastıktan sonra. Bunu "raylar sunucusu" için yararlı buldum, sonra dev sunucumu kapattığımda pencereyi kapatmam gerekmiyor.


2
Bunu bir ray sunucusu çalıştırmak için kullanıyorsanız, aslında yazmanıza gerek yoktur cmd. Sadece yazabilirsiniz start rails s.
13'te fbonetti

86

Toplu iş dosyanızda aşağıdakileri kullanın:

start cmd.exe /k "more-batch-commands-here"

veya

start cmd.exe /c "more-batch-commands-here"

/ c dize tarafından belirtilen komutu yerine getirir ve sonra sonlandırır
/ k Dize tarafından belirtilen komutu yerine getirir, ancak kalır

cmd /?Daha fazla bilgi için cmd.exe belgelerine bakın.

Komut dizesinin düzgün biçimlendirilmesi, bağımsız değişkenlerdeki boşluklarla biraz daha karmaşık hale gelir. Aşağıdaki örneklere bakın. Bazı örneklerde iç içe çift tırnak işareti kullanıldığına dikkat edin.

Örnekler:

Bir program çalıştırın ve bir dosya adı parametresi iletin:
CMD /c write.exe c:\docs\sample.txt

Bir program çalıştırın ve uzun bir dosya adı verin:
CMD /c write.exe "c:\sample documents\sample.txt"

Program yolundaki boşluklar:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

Program yolu + parametrelerindeki boşluklar:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

Demo1 ve Demo2'yi başlat:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

Kaynak: http://ss64.com/nt/cmd.html


13

Bu çok kolay değil.

En iyi yaklaşım, komut dosyanızın "yeni bir pencerede" yürütülmesini istediğiniz bölümünün ayrı bir .bat dosyasında olmasını sağlamaktır. Örneğin, komut dosyanızın geri kalanından (değişkenler vb.) Çok fazla duruma ihtiyacınız varsa bu pratik olmayabilir. Seçeneklerden biri, ihtiyacınız olan değerleri (örneğin, çalışmak için dir) toplu iş dosyasına iletmektir:

start cmd.exe stuff.bat %this_dir%

İletilecek büyük miktarda durumunuz varsa, çalışma zamanında bir toplu iş dosyası oluşturmayı düşünebilirsiniz:

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%"

Açıkçası bu önemsiz bir örnek.


11

Yukarıdaki cevaplar bana yardımcı oldu. Ama yine de biraz çözmeyi gerektiriyordu. İşte web geliştirme için 3 işlem başlatmak için kullandığım örnek bir komut dosyası. Sürekli çalışması gerektiğinden 3 pencerenin açık kalmasıyla sonuçlanır.

Mongo küresel olarak yoluma eklendi, bu yüzden diğer iki program için yaptığım gibi cd'ye ihtiyacım yok. Tabii ki dosyalarınızın yolu değişecektir, ancak umarım bu yardımcı olacaktır.

:: 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

Stack Overflow'daki herkese teşekkürler; bu çözüm yukarıdaki soruyu çözer, ancak bu görevleri otomatik olarak çalıştıracak şekilde genişletilir:

  1. Ray sunucumu çalıştırmak istiyorum
  2. Bir komisyon işleri çalıştırın : işçi de benim delayed_job mücevher için
  3. ve Sayfamı göstermek için varsayılan internet tarayıcısını aç
  4. son olarak, oturumum sırasında ekstra komutlar için bir cmd penceresini açık bırakmak .

Sanırım projeme "eskitme" deniyor.

% USERPROFILE% dizininizde bir "init.bat" dosyası oluşturun (bir cmd penceresi açın ve% USERPROFILE% öğesinin ne olduğunu öğrenmek için imlecin solundaki yola bakın)

@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

Yeni bir komut satırı penceresinde şunu yazın: C:> init antiquorum

Kod iki cmd pencere daha ve bir tarayıcı açar. TIMEOUT tarayıcıdaki hataları önler.

: Başlangıç bölümü çalışır. : Sen olarak yazarak Parametreleri ile ayrı ayrı görevleri 1,2 veya 4 çalıştırabilir sunucunun , işçi açılan cmd bırakmak veya hiçbiri kökü ait "Antiquorum" projesi.

Zevk almak.


2

Bunu doğru şekilde yaptığınızı anlarsam, bat dosyanız Komut istemini açar ve mesajınızı ekrana yazdırır.

cmd.exe hello world

Bu yardımcı olur umarım.


2

dosya adında boşluklar bulunan yeni bir cmd penceresinde bir python dosyası çalıştırmak için:

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

0

İki komut arasına ekleme her iki komutu da yürütür ./k in order

Misal:

cmd /k echo "hello"

Bu komut ilk açılacak command promptsonra yürütmek echo "hello"komutunu

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.