2012-10-11 15 views
7

Bir Windows Batch dosyası kullanarak bir yapılandırma dosyasını yeniden yazmaya çalışıyorum. Dosyanın satırları arasında dolaşıyorum ve yeni bir satırla değiştirmek istediğim satırı arıyorum. Windows Batch kullanarak Çıktı dosyasına çift tırnaklı Dize Yığın

ben dosyanın

:AddText %1 %2 
set Text=%~1% 
set NewLine=%~2% 
echo "%Text%" | findstr /C:"%markerstr%" 1>nul 
if errorlevel 1 (
    if not "%Text%" == "" (
     setlocal EnableDelayedExpansion 
     (
      echo !Text! 
    ) >> outfile.txt 
) else (
    echo. >> outfile.txt 
) 
) else (
    set NewLine=%NewLine"=% 
    setlocal EnableDelayedExpansion 
    (
     echo !NewLine! 
) >> outfile.txt 

) 
exit /b 

% Metni% gömülü çift tırnak ile bir dize olduğunda sorunudur hattı yazar bir 'işlevini' var. Ardından başarısız. Muhtemelen, başarısızlığa sebep olacak başka karakterler de vardır. Yapılandırma dosyasında bulunan tüm metinlerle çalışabilmek için bunu nasıl edinebilirim?

+0

(sözler de çıktıda dış çevredeki çift tırnak üretecek ikinci hat) , toplu iş kullanmayın - powershell veya vbscript veya başka bir betik dili kullanın. –

+0

Bu harika olurdu, ama gerçekten bir seçenek olarak buna sahip değilim. –

+0

Aslında sorun, yankıda buraya eklenen çift tırnak işareti: echo% Text% | findstr/C: "% markerstr%" 1> nul –

cevap

7

^" ile Text numaralı telefondan tüm " değiştirmeyi deneyin. "

aşağıdakileri deneyebilirsiniz düzenli karakter olarak işlem görecektir böylece

^

kaçış karakteri geçerli: Size hatalara neden olabilir

:AddText %1 %2 
set _Text=%~1% 
set Text=%_Text:"=^^^"% 

... rest of your code 

REM for example if %1 is "blah"blah"blah" 
REM _Text will be blah"blah"blah 
REM Text will be blah^"blah^"blah 

Diğer karakterler (yukarıdaki ile bunu çözebilir çözelti) şunlardır:

bir windows toplu kabuğunda
\ & | > <^
1

(komut) çift tırnakile kaçışsın Standart komut satırında AMA çift tırnaklar çift çift tırnak ile

echo Hello ^"Boy^" 
echo "Hello ""Boy""" 

: Eğer güvenilir çalışmak istiyorsanız

İlgili konular