2011-06-29 18 views
7

Zor bir bit. Bir toplu iş dosyasında aşağıdakilerden nasıl kaçabilirim?Bir eğik çizgi ve soru işareti ile başlayan bir toplu iş dosyası yankıdan kaçma

echo /? display this help text 

Bu özel karakter birleşimi "ECHO /?" Olarak kabul edilir. Komut satırına (^) yanıt vermiyor, örn., ( ) ^/Denedim mi?/^? ve ^/^?

Not: Çözüm olarak, ben ECHO komut satırı işlemcisi, örneğin bypass için yeterlidir aradaki diğer karakterleri ekleyerek bulundu: Hala

echo ... /? display this help text 

, bu ideal değildir ve orada olmadığını merak ettim İstenen çıktıya ulaşmak için, yani /? yankı mesajının başında. echo=
Ama sadece echo( ekteki karşı güvenli gibi görünüyor, echo., echo: gibi pek çok çeşidi vardır yankı argümanları kaçan İçin

echo./? 

cevap

5

yankı argümanları kaçan için, alternatif sözdizimi echo. kullanabilirsiniz Metin.

Bunlar bir, başarısız dosyaları geçerli dizinde bir dosya

echo\..\my.bat 
echo:\..\my.bat 
echo.\..\my.bat

Bunlar my.bat adlı Varlığından eğer bu bir, başarısız echo, echo[, echo] veya echo+

echo. 
echo[ 
echo] 
echo+

gibi varsa biri bir dosyanın bağımsızlığını bozar (

Sadece echo( her türlü içeriğe karşı güvenli görünüyor.

+0

Teşekkürler! Bu işe yarıyor ve hatta boşluklarla doldurursun. – Mykro

+0

'echo.' her zaman diske erişir ve' echo. \ .. \ mybat.bat' gibi çıkışla başarısız olur (mybat.bat geçerli dizinde varsa) – jeb

+0

@Jeb: çok ilginç. –

5

:

+0

Ayrıca '/?' Ile de kırılabilecek 'echo =' da var. –

+0

Bu varyantlar nerede belgeleniyor? Ya da neden mümkündür? Her şey bir böcek gibi görünüyor. – utapyngo

+2

@utapyngo cmd.exe on iki maymunun rastgele bir sonucudur. Belgeler yok, sadece testler (birçok test) – jeb