Yanıtlar:
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.
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
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.
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"
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:
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.
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.
İ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 prompt
sonra yürütmek echo "hello"
komutunu
cmd
. Sadece yazabilirsinizstart rails s
.