2015-11-16 13 views
5

^Sembolü boşluklu dizileri kullanmak için çift tırnak kullanılırken argümanlarla çok satırlı bir komut girmek için^sembolünü kullanırken, herkes bunun yolunu açıklayabilir mi?Küme dosyası çok satırlı komut çift tırnaklı

@echo off 
for %%x in (%*) do (

    IF EXIST %%x (
     call "c:\Program Files\Notepad++\notepad++.exe" %%x 
    ) ELSE (
     call echo Not found %%x 
    ) 

) 

pause 

gibi olsun hata

C:\>call openfiles.cmd "C:\dir with spaces\file with spaces.txt"^
ELSE was unexpected at this time. 
benziyor

@echo off 
call openfiles.cmd^
"C:\dir with spaces\file with spaces.txt"^
"C:\another dir with spaces\another file with spaces.txt" 

openfiles.cmd görünüyor notworking.cmd

@echo off 
call openfiles.cmd^
C:\dir\filename.txt^
C:\another_dir\another_file.txt 

working.cmd

+0

örnekte çalıştıkları için düşünür bir çift ​​tırnak orijinali sorunumu düzeltmek için görünmüyordu – Mazaka

+0

Tırnaklar kaçtı ve boşluklar filena bölebilir daha küçük parçalara ayırma – jeb

+0

"dubble" benim yeni favori kelimemdir. –

cevap

5

şapka kural: karakteri bütün kaybeder, böylece

Bir şapka, bir sonraki karakteri kaçar özel efektler.
Sonraki karakter bir satır beslemesi ise bunu bırakın ve bir sonraki karakteri alın (bu ayrıca bir satır besleme olduğunda bile). Eğer

echo #1 Cat^&Dog 
echo #2 Cat^ 
&Dog 
echo #3 Redirect to > Cat^ 
Dog 

setlocal EnableDelayedExpansion 
set linefeed=^ 


echo #4 line1!linefeed!line2 

#3 gibi şeyler açıklayabilir bu basit kuralı ile

uzay kaçmış ve artık ayırıcı olarak çalışmıyor olarak "Kedi Köpek" adlı bir dosya oluşturur.

Ancak bu kuralı ihlal etmek hala mümkündür!
Sadece düzeltme işaretinin önüne herhangi bir yönlendirme koymanız yeterlidir, hala satır beslemesini bırakır (çok satırlı çalışır), ancak sonraki karakter artık kullanılmaz.

echo #5 Line1< nul^
& echo Line2 

Yani siz de satırlı komut oluşturmak için bu kullanabilirsiniz

call openfiles.cmd < nul^
"C:\dir with spaces\file with spaces.txt" < nul^
"C:\another dir with spaces\another file with spaces.txt" 

Ya kullanarak i önünde fazladan boşluklar var yukarıda makro

set "\n=< nul ^" 
call openfiles.cmd %\n% 
"C:\dir with spaces\file with spaces.txt" %\n% 
"C:\another dir with spaces\another file with spaces.txt" 
1

Bazı farklı şeyleri denedikten sonra, çift tırnaklardan daha fazla alanla çalışmayı başardım. aşağıdakilere notworking.cmd değişiklikler çift tırnak önünde

@echo off 
call openfiles.cmd^
"C:\dir with spaces\file with spaces.txt"^
"C:\another dir with spaces\another file with spaces.txt" 

notunu boşluk çalıştı

+0

notepad ++, satır sonlarımda CR-LF olduğunu gördüğümde-> semboller-> tüm sahtekarları göster, bu yüzden neden boşlukların bana neden yardımcı olduğunu bilmiyorum – Mazaka

+0

Oh, gerçekten, çoğaltabilirim. Aslına bakarsanız, hiç bitmeden (genellikle bir TAB ile) devam satırlarını kullanmayı düşünmemiştim ... – wOxxOm

+0

Geri beslemeniz için teşekkürler, sorunumu çözdüm. – Mazaka

İlgili konular