Aynı komut dosyası üzerinde bashve cmdaynı komut dosyasıyla farklı komutları çalıştırmanın birkaç yolu vardır .
cmd:;diğer yanıtlarda belirtildiği gibi ile başlayan satırları yok sayacaktır . Ayrıca, mevcut satır komutla biterse sonraki satırı da yok sayar rem ^, çünkü ^karakter satır sonundan kaçar ve sonraki satır tarafından yorum olarak değerlendirilir rem.
Çizgileri bashgörmezden gelmeye gelince cmd, birden fazla yol var. cmdKomutları bozmadan bunu yapmanın bazı yollarını sıraladım :
Varolmayan #komut (önerilmez)
Betik çalıştırıldığında herhangi bir #komut mevcut değilse cmd, bunu yapabiliriz:
echo 'Hello bash!'
#Başında karakter cmdçizgisi markaların bashbir yorum olarak bu çizgiyi davranın.
#Sonundaki karakter bashhattına açıklama için kullanılır \rBrian Tompsett işaret ettiği gibi, karakter onun cevabını . Bu olmadan bash, dosyanın \r\ngerektirdiği satır sonları varsa bir hata atar cmd.
Bunu yaparak # 2>nul, takip eden komutu yürütmeye devam ederken, cmdvar olmayan bazı #komutların hatasını görmezden gelmek için kandırıyoruz .
#Üzerinde bir komut PATHvarsa veya kullanabileceğiniz komutlar üzerinde hiçbir kontrolünüz yoksa bu çözümü kullanmayın cmd.
Üzerindeki karakteri echoyok saymak için kullanma#cmd
echoYeniden yönlendirilmiş çıktı ile yorumlanan alana cmdkomutlar eklemek için kullanabiliriz bash:
echo >/dev/null
echo 'Hello bash!'
Yana #karakter üzerinde anlam hiçbir special vardır cmd, bu metnin bir parçası olarak kabul edilir echo. Tek yapmamız gereken echokomutun çıktısını yeniden yönlendirmek ve ardından başka komutlar eklemek.
Boş #.batdosya
echo >/dev/null
echo 'Hello bash!'
echo >/dev/null # 1>nul 2> #.batHat boş oluşturur #.batiken dosyayı cmd(veya cümledeki varolan #.batvarsa) ve üzerinde ise hiçbir şey yapmaz bash.
Bu dosya, üzerinde cmdbaşka bir #komut olsa bile izleyen satır (lar) tarafından kullanılacaktır PATH.
del #.batÜzerinde komut cmde özgü kod oluşturulduğu dosyayı siler. Bunu sadece son cmdsatırda yapmanız gerekir .
#.batMevcut çalışma dizininizde bir dosya bulunma olasılığı varsa bu çözümü kullanmayın , çünkü bu dosya silinecektir.
Önerilen: buradaki belgeyi kullanarak cmdkomutları yoksaymakbash
:; echo 'Hello bash!';<<:
echo Hello cmd! & ^
:
^Karakteri cmdsatırın sonuna yerleştirerek satır sonundan kaçarız :ve burayı-belge sınırlayıcı olarak kullanarak sınırlayıcı satır içeriklerinin hiçbir etkisi olmaz cmd. Bu şekilde, cmdsatırını yalnızca satır bittikten sonra çalıştıracak ve :aynı davranışa sahip olacaktır bash.
Her iki platformda birden fazla satıra sahip olmak ve bunları yalnızca bloğun sonunda çalıştırmak istiyorsanız, bunu yapabilirsiniz:
:;(
:; echo 'Hello'
:; echo 'bash!'
:; );<<'here-document delimiter'
(
echo Hello
echo cmd!
) & rem ^
here-document delimiter
cmdTam olarak bir çizgi olmadığı sürece here-document delimiter, bu çözüm işe yaramalıdır. Başka here-document delimiterherhangi bir metne geçebilirsiniz .
Sunulan tüm çözümlerde, komutlar yalnızca son satırdan sonra çalıştırılır ve her iki platformda da aynı şeyi yaparlarsa davranışlarını tutarlı hale getirir.
Bu çözümler \r\nsatır sonları ile dosyalara kaydedilmelidir , aksi takdirde üzerinde çalışmazlar cmd.