it-swarm-tr.com

Windows CMD'de iki komutu bir satırda nasıl çalıştırırım?

Windows CMD konsolunda iki komut çalıştırmak istiyorum.

Linux'ta böyle yapardım

touch thisfile ; ls -lstrh

Windows'ta nasıl yapılır?

740
flybywire

2000'den beri tüm Microsoft işletim sistemlerinde bu gibi ve bugün hala iyi:

dir & echo foo

İkinci komutun yalnızca ilk başarıyla çıkıldığında çalıştırılmasını istiyorsanız:

dir && echo foo

Bir satırda birden fazla komut çalıştırmak için tek ve (&) sözdizimi Windows XP, Windows 2000 ve bazı önceki NT sürümlerine geri döner. (En az 4.0, burada bir yorum yapana göre.)

Bu sayfada aşağıya doğru kalacağınızı anlamanız gereken birkaç nokta daha var.

Tarihsel veriler, onu eğitici bulabilenler için izler.

Bundan önce, && sözdizimi, bu özellik Microsoft komut yorumlayıcısına eklenmeden önce yalnızca Shell değiştirme 4DOS'unun bir özelliği idi.

Windows 95, 98 ve ME'de bunun yerine pipo karakterini kullanırsınız:

dir | echo foo

MS-DOS 5.0 ve sonraki sürümlerinde, komut yorumlayıcısının önceki bazı Windows ve NT sürümlerinde, (belgelenmemiş) komut ayırıcı, burada ^ T ile temsil edeceğim karakter 20 (Ctrl + T) idi.

dir ^T echo foo
1005
djdanlib

Belgelerden bir alıntı:

Birden çok komut ve koşullu işlem sembollerini kullanma

Koşullu işleme sembollerini kullanarak tek bir komut satırından veya komut dosyasından birden çok komut çalıştırabilirsiniz. Koşullu işlem sembolleriyle birden fazla komut çalıştırdığınızda, koşullu işlem sembolünün sağındaki komutlar, koşullu işlem sembolünün solundaki komutun sonuçlarına göre hareket eder. 

Örneğin, yalnızca önceki komut başarısız olursa bir komut çalıştırmak isteyebilirsiniz. Veya yalnızca önceki komut başarılı olduğunda bir komut çalıştırmak isteyebilirsiniz.

Birden çok komut iletmek için aşağıdaki tabloda listelenen özel karakterleri kullanabilirsiniz.

  • & [...]
    command1 & command2
    Bir komut satırında birden çok komutu ayırmak için kullanın. Cmd.exe ilk komutu ve ardından ikinci komutu çalıştırır.

  • && [...]
    command1 && command2
    && izleyen komutu çalıştırmak için, sadece sembolden önceki komut başarılı olursa kullanılır. Cmd.exe ilk komutu çalıştırır ve ardından ikinci komutu yalnızca ilk komut başarılı bir şekilde tamamlandıysa çalıştırır. 

  • || [...]
    command1 || command2
    Aşağıdaki komutu çalıştırmak için kullanın || sadece önceki komut || başarısız olur. Cmd.exe ilk komutu çalıştırır ve ardından ikinci komutu yalnızca ilk komut başarıyla tamamlanmadıysa çalıştırır (sıfırdan büyük bir hata kodu alırsa).

  • ( ) [...]
    (command1 & command2)
    Birden çok komutu gruplamak veya yerleştirmek için kullanın.

  • ; or ,
    command1 parameter1;parameter2
    Komut parametrelerini ayırmak için kullanın.

519
Raihan

&, ; (çalıştırma komutları) için Bash eşdeğeridir ve &&, && öğesinin Bash eşdeğeridir (yalnızca önceki hataya neden olmadığında çalıştır komutları).

65
manojlds

& Komutları birbiri ardına çalıştırmak için kullanabilirsiniz. Örnek: c:\dir & vim myFile.txt

23
scrappedcola

Bir cmd kısayolu oluşturmak istiyorsanız (örneğin masaüstünüzde)/k parametresini ekleyin (/ k, keep,/c pencereyi kapatacak demektir):

cmd /k echo hello && cd c:\ && cd Windows
16
TroodoN-Mike

Çok yakında değerlendirilen ortam değişkenleri sorununu aşmak için call komutunu kullanabilirsiniz - örn.

set A=Hello & call echo %A%
11
SSi

Aynı satırda birkaç komut çalıştırırken bir dizi işleme sembolü kullanılabilir ve bazı durumlarda işleme yeniden yönlendirmesine neden olabilir, başka durumlarda çıktıyı değiştirebilir veya sadece başarısız olabilir. Önemli bir durum, değişkenleri manipüle eden aynı satır komutlarına yerleştirmektir.

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

Yukarıdaki örnekte gördüğünüz gibi, değişkenleri kullanan komutlar aynı satıra yerleştirildiğinde, değişken değerlerinizi güncellemek için gecikmeli genişletme kullanmanız gerekir. Değişkeni dizine eklenmişse, aynı satırdaki değerini güncellemek için %% değiştiricili CALL komutunu kullanın:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
6
sambul35

Böylece, bir bağlam menüsünden RegAsm (kayıt derleme) çalıştırma görevini etkinleştirmeye çalışıyordum. Yaptığım sorun, okumadan önce sonucun yanıp sönmesi ve kaybolmasıydı. Bu yüzden, komut başarısız olduğunda çalışmayan Pause 'a boru bağlamayı denedim (burada belirtildiği gibi Pause komutu .bat betiğinde çalışmıyor ve burada Toplu iş dosyası komutu PAUSE çalışmıyor ) Bu yüzden cmd /k 'u denedim ama bu pencereyi daha fazla komut için açık bırakıyor (sadece sonucu okumak istiyorum). Bu yüzden, bir pause ve ardından zincirle exit ekledim;

cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit

Bu bir cazibe gibi çalışır - RegAsm dosya üzerinde çalışır ve sonuçlarını gösterir, ardından "Devam etmek için herhangi bir tuşa basın ..." İstemi gösterilir, sonra bir tuşa basıldığında İstemi penceresi açılır.

Not; İlgilenebilecek diğer kişiler için, .dll dosyalarına bir dllfile ilişkilendirmesi ve ardından buna bir RegAsm komut uzantısı eklemek için aşağıdaki .reg dosya girdilerini kullanabilirsiniz (bu çıkış işaretlerini ve ters eğik çizgileri dikkat edin):

[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"

Şimdi bir derleme kaydetmek için güzel bir sağ tıklama menüsü var.

5
SNAFUBAR

cmd /c ipconfig /all & Output.txt

Bu komut komutu çalıştırır ve Output.txt dosyasını tek bir komutta açar

5
dpp.2325

İki komutu aynı anda yürütebilmek için iki komutun arasına & (ve işareti) sembolü koymanız gerekir. Gibi:

color 0a & start chrome.exe

Şerefe!

3
PryroTech

Aynı pencerede iki ping yapmaya çalışıyorum ve aynı satırda seri bir komut. İlkini bitirdikten sonra ikinci komutu çalıştırın.

Çözüm, bir Windows 7 komut isteminde start /b ile birleştirmekti.

Her zamanki gibi /b kullanmadan başlayın ve ayrı bir pencerede başlatın.

Aynı satırda başlatmak için kullanılan komut:

start /b command1 parameters & command2 parameters

Herhangi bir şekilde, çıktıyı ayrıştırmak istiyorsanız, bunu kullanmanızı tavsiye etmem .. .. Komutların çıktısı arasında çıkışın karıştırıldığını fark ettim.

3
sdcxp

İki seçeneğiniz var: Borular veya sadece &:

DIR /S & START FILE.TXT

Veya,

tasklist | find "notepad.exe"

Borular (|) bir komutun çıktısını almak ve bir başkasına koymak için daha fazladır. Ve (&) sadece şunu çalıştırıyor ve şunu söylüyor. 

3
PyDever

Hayır, cd / && tree && echo %time%. İlk komut çalıştırıldığında yankılanma zamanıdır.

Boruların bir sorunu var, ancak insanlar nasıl çalıştığını bildiği sürece kritik değil.

1
notarealname

Tek satırda değişkenleri kullanmaya veya değiştirmeye çalıştığınızda, bunların içeriğine dikkat edin! Örneğin. aşağıdaki gibi bir değişken

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

%PATH% olarak kullanırsanız, el-yapımı bir çok soruna yol açabilir.

  1. Kapanan parantezler grup ifadenizi sonlandırır
  2. Çift tırnak parantez sorununu işlemek için %PATH% kullanmanıza izin vermiyor
  3. Ve %USERPROFILE% gibi referans verilen bir değişken ne içerecektir?
0
V15I0N

Bir örnek daha: Örneğin, gulp build sistemini kullandığımızda

gulp - default> build

gulp build - build build-folder

gulp watch - dosya izlemeye başla

gulp dist - dağıtım klasörü oluştur

Bunu bir satırla yapabiliriz:

cd c:\xampp\htdocs\project & gulp & gulp watch
0
Mile Mijatovic

Evet var. Bu &.

&&, komut 1 tamamlandığında, başarısız olmamak kaydıyla komut 2'yi yürütecektir.

ve ne olursa olsun yürütecek.

Çok basit: Sadece && işaretleri ile ayırt et. Örnek: 

echo Hello World && echo GoodBye World

Goodbye World, Hello World'den sonra basılacak.

0
Rajan Dhanowa