İşe yaradığı yanılsamasını veren cevaplara rağmen, gerçek şu ki uzayda her zamanki cmd argümanlarına gizlice giremezsiniz. Bunu kanıtlamak kolaydır:
" echo %1" Olarak kaydedin test.bat. Bu toplu iş dosyası, cmd'nin bizi geçtiği ilk argümanı çıkartacaktır.
Şimdi, denemek ve çalıştırmak test.batdeğerini ayarlayarak, %1için foo bar. ( fooVe arasında bir boşluk karakteri olduğunu unutmayın bar.)
Birkaç yıl deneme yanılma ve bunu yapmanın bir yolu olmadığını anlayın . Millet kullanarak kaçmayı önerir ^, henüz test.bat foo^ barçıkış olmaz foo bar.
Yani çıktıyı elde etmenin yolu yok ve elde edebileceğimiz foo baren yakın şey test.bat foo" "barüreten üreten foo" "barveya test.bat "foo bar"üreten çalışan "foo bar".
Şimdi, diğer cevaplar nedeni görünür işe nedeni cdyok ise kendi geçirerek zamanki argüman davranışı (her zamanki ayrılarak, ek ayrıştırma %1, %2, %3tipik toplu dosyalarında ve vb.)
Örneğin, kendine özgü komutu düşünün:
cd c:\documents and settings \some folder with spaces
Neden çalışıyor Bunun nedeni cd kendisinin 7 katılmadan eşdeğer bir şey yapıyor her zamanki bir mantıksal birine argümanlar. Cmd argümanını geçen normlara göre 7 argüman görüyoruz:
c:\documents
and
settings
\some
folder
with
spaces
Sanki cd7 argümana tek bir mantıksal olana katılmış array.join(" "), yoluna benzer bir şey yaparak,:
c:\documents and settings \some folder with spaces
Bu davranışın sadece (ve bazı diğer fonksiyonlara) özgücd olduğunu unutmayın . Her zamanki argüman geçişi ile ilgisi yoktur.
Aslında, cdbaşka bir özelliği var. Yukarıda çıktıyı alamadığımızı söylediğimizi hatırlıyor foo barmusunuz? Alabileceğimiz en yakın çıktı:
test.bat foo" "bar
hangi üretir foo" "bar, ya da:
test.bat "foo bar"
hangi üretir "foo bar", ya da:
test.bat "foo "bar
hangi üretir "foo "bar, ya da:
test.bat foo" bar"
hangi üretir foo" bar", ya da:
test.bat "foo b"ar
hangi üretir "foo b"ar, ya da:
test.bat fo"o bar"
hangi üretir fo"o bar", ya da:
test.bat fo"o ba"r
hangi üretir fo"o ba"r, ya da:
test.bat "fo"o" bar"
hangi üretir "fo"o" bar", ya da:
test.bat "f""o""o"" ""b""a""r":
hangi üretir "f""o""o"" ""b""a""r", hatta:
test.bat """"f"""o""""o"" ""ba"""r"""""""""":
hangi üretir """"f"""o""""o"" ""ba"""r"""""""""".
Yukarıdaki örneklerin tümü, karakterleri foo barkestikten sonra üretecekleri benzerliğe sahiptir ". cdYazarın da bunu farketmiş olması gerekir ... eğer aldıkları her şeyi kesen ve bu komutların hepsinin çalışmasına izin veren cdtuhaf davranışlarından çıkarsaydık :"
cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs