Aynı komut dosyası üzerinde bash
ve cmd
aynı 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 bash
görmezden gelmeye gelince cmd
, birden fazla yol var. cmd
Komutları 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 bash
bir yorum olarak bu çizgiyi davranın.
#
Sonundaki karakter bash
hattına açıklama için kullanılır \r
Brian Tompsett işaret ettiği gibi, karakter onun cevabını . Bu olmadan bash
, dosyanın \r\n
gerektirdiği satır sonları varsa bir hata atar cmd
.
Bunu yaparak # 2>nul
, takip eden komutu yürütmeye devam ederken, cmd
var olmayan bazı #
komutların hatasını görmezden gelmek için kandırıyoruz .
#
Üzerinde bir komut PATH
varsa veya kullanabileceğiniz komutlar üzerinde hiçbir kontrolünüz yoksa bu çözümü kullanmayın cmd
.
Üzerindeki karakteri echo
yok saymak için kullanma#
cmd
echo
Yeniden yönlendirilmiş çıktı ile yorumlanan alana cmd
komutlar 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 echo
komutun çıktısını yeniden yönlendirmek ve ardından başka komutlar eklemek.
Boş #.bat
dosya
echo >/dev/null
echo 'Hello bash!'
echo >/dev/null # 1>nul 2> #.bat
Hat boş oluşturur #.bat
iken dosyayı cmd
(veya cümledeki varolan #.bat
varsa) ve üzerinde ise hiçbir şey yapmaz bash
.
Bu dosya, üzerinde cmd
başka bir #
komut olsa bile izleyen satır (lar) tarafından kullanılacaktır PATH
.
del #.bat
Üzerinde komut cmd
e özgü kod oluşturulduğu dosyayı siler. Bunu sadece son cmd
satırda yapmanız gerekir .
#.bat
Mevcut çalışma dizininizde bir dosya bulunma olasılığı varsa bu çözümü kullanmayın , çünkü bu dosya silinecektir.
Önerilen: buradaki belgeyi kullanarak cmd
komutları yoksaymakbash
:; echo 'Hello bash!';<<:
echo Hello cmd! & ^
:
^
Karakteri cmd
satı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, cmd
satı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
cmd
Tam olarak bir çizgi olmadığı sürece here-document delimiter
, bu çözüm işe yaramalıdır. Başka here-document delimiter
herhangi 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\n
satır sonları ile dosyalara kaydedilmelidir , aksi takdirde üzerinde çalışmazlar cmd
.