Bir toplu iş dosyasında uzun komutları birden fazla satıra nasıl bölebilirim?
Şale ve onu takip eden yeni satırın tamamen kaldırıldığını hatırladığınız sürece, cetvel ^
ile uzun satırları bölebilirsiniz. Öyleyse, çizgiyi kırdığınız bir boşluk olması gerekiyorsa, bir boşluk ekleyin. ( Aşağıdakilerle ilgili daha fazla. )
Örnek:
copy file1.txt file2.txt
şöyle yazılırdı:
copy file1.txt^
file2.txt
Şapka için kural:
Satır sonundaki bir şapka bir sonraki satırı ekler, eklenen satırın ilk karakteri kaçar.
Şapkayı birden çok kez kullanabilirsiniz, ancak satırın tamamı ~ 8192 karakterden uzun olamaz (Windows XP, Windows Vista ve Windows 7).
echo Test1
echo one ^
two ^
three ^
four^
*
--- Output ---
Test1
one two three four*
echo Test2
echo one & echo two
--- Output ---
Test2
one
two
echo Test3
echo one & ^
echo two
--- Output ---
Test3
one
two
echo Test4
echo one ^
& echo two
--- Output ---
Test4
one & echo two
Bir sonraki karakterin kaçışını bastırmak için yeniden yönlendirme kullanabilirsiniz.
Yönlendirme, derenin hemen önünde olmalı. Ancak, şapkadan önce yönlendirilen bir merak var.
Şapkaya bir belirteç yerleştirirseniz belirteç kaldırılır.
echo Test5
echo one <nul ^
& echo two
--- Output ---
Test5
one
two
echo Test6
echo one <nul ThisTokenIsLost^
& echo two
--- Output ---
Test6
one
two
Ayrıca dizgeye satır beslemeleri gömme de yapılabilir:
setlocal EnableDelayedExpansion
set text=This creates ^
a line feed
echo Test7: %text%
echo Test8: !text!
--- Output ---
Test7: This creates
Test8: This creates
a line feed
Boş satır başarı için önemlidir. Bu sadece gecikmeli genişleme ile çalışır, aksi halde satırın geri kalanı satır beslemesinden sonra dikkate alınmaz.
İşe yarıyor, çünkü çizgi ucundaki çizgi, sonraki çizgi beslemesini yok sayar ve bir sonraki karakter bir çizgi beslemesi olsa bile bir sonraki karakterden kaçar (satır başı her zaman bu aşamada yoksayılır).
(Bu temelde Wayne'in cevabı 'nun bir yeniden yazmasıdır; ancak şapka etrafındaki karışıklık giderildi. Ben bir CW olarak yayınladım. Düzenleme konusunda utangaç değilim. cevaplar, ancak tamamen yeniden yazmaları uygunsuz görünüyor.)
Şapka ile uzun satırları ayırabilirsiniz (^
), sadece şapkaların ve onu izleyen yeni satırın komuttan tamamen tamamen kaldırıldığını unutmayın. boşluk gerekir (parametreler arasında olduğu gibi), boşluğu da içerdiğinizden emin olun (^
'den önce veya bir sonraki satırın başında - bu ikinci seçimin bir devamı olduğunu açıkça belirtebilir).
Örnekler: (tümü Windows XP ve Windows 7'de test edilmiştir)
xcopy file1.txt file2.txt
olarak yazılabilir:
xcopy^
file1.txt^
file2.txt
veya
xcopy ^
file1.txt ^
file2.txt
ya da
xc^
opy ^
file1.txt ^
file2.txt
(Bu son işe yarar, çünkü xc
ve ^
arasında hiçbir boşluk yoktur ve bir sonraki satırın başında boşluk yoktur. Böylece ^
ve newline'ı kaldırdığınızda, __xcopy
elde edersiniz.)
Okunabilirlik ve akıl sağlığı için, sadece parametreler arasında en iyi ihtimalle kesin (boşluk eklediğinizden emin olun).
^
öğesinin bir toplu iş dosyasındaki son şeyin olmadığından olduğundan emin olun, çünkü --- olduğu gibi bununla ilgili büyük bir sorun gibi .
Çoklu komutlar parantez içine alınabilir ve çok sayıda satıra yayılabilir; Böylece echo hi && echo hello
gibi bir şey şöyle konulabilir:
( echo hi
echo hello )
Ayrıca değişkenler yardımcı olabilir:
set AFILEPATH="C:\SOME\LONG\PATH\TO\A\FILE"
if exist %AFILEPATH% (
start "" /b %AFILEPATH% -option C:\PATH\TO\SETTING...
) else (
...
Ayrıca, cetvellerle (^
) if
koşullarının onları yalnızca bir boşluk varsa izlemekten hoşlandıklarını fark ettim:
if exist ^
Bununla birlikte, for döngüsü değerlerinin ortasındaki bölünmenin bir kareye ihtiyacı yoktur (ve gerçekte birini kullanmaya çalışmak bir sözdizimi hatası olarak kabul edilir). Örneğin,
for %n in (hello
bye) do echo %n
Merhaba ya da güle güle gelmeden önce bile boşluğa gerek olmadığını unutmayın.