2012-10-11 11 views
7

का उपयोग कर आउटपुट फ़ाइल के लिए डबल कोट्स के साथ स्ट्रिंग की इको। मैं विंडोज बैच फ़ाइल का उपयोग कर कॉन्फ़िगरेशन फ़ाइल को फिर से लिखने का प्रयास कर रहा हूं। मैं फ़ाइल की लाइनों के माध्यम से लूपिंग कर रहा हूं और उस लाइन की तलाश कर रहा हूं जिसे मैं एक निर्दिष्ट नई लाइन के साथ बदलना चाहता हूं।विंडोज बैच

मैं एक 'समारोह' उस फ़ाइल

: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 

जब% पाठ% एम्बेडेड दोहरे उद्धरण चिह्नों के साथ एक स्ट्रिंग है समस्या यह है करने के लिए लाइन लिखते है। फिर यह विफल हो जाता है। शायद अन्य पात्र भी हैं जो इसे असफल होने का कारण बनेंगे। कॉन्फ़िगरेशन फ़ाइल में पाए गए सभी पाठों के साथ काम करने में सक्षम होने के लिए मैं इसे कैसे प्राप्त कर सकता हूं?

+0

आप इसे मज़बूती से काम करने के लिए चाहते हैं , बैच का उपयोग न करें - पावरहेल या vbscript, या किसी अन्य स्क्रिप्टिंग भाषा का उपयोग करें। –

+0

यह बहुत अच्छा होगा, लेकिन मेरे पास वास्तव में एक विकल्प के रूप में नहीं है। –

+0

दरअसल समस्या यह है कि यहां गूंज में एम्बेडेड डबल कोट्स: echo% text% | findstr/C: "% markerstr%" 1> nul –

उत्तर

7

Text में ^" के साथ सभी " को बदलने का प्रयास करें।

^ चरित्र से बचने के है, इसलिए " नियमित वर्ण

आप निम्नलिखित कोशिश कर सकते हैं रूप में माना जाएगा:

: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 

अन्य अक्षर हैं जो आप त्रुटियों का कारण बन सकता (आप ऊपर के साथ इसे हल कर सकते समाधान) हैं:

\ & | > <^
1

विंडोज बैच खोल (कमांड) डबल कोटसे बच रहे हैं मानक कमांड लाइन पर लेकिन एक डबल उद्धृत स्ट्रिंग के अंदर एक डबल दोहरे उद्धरण के साथ

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

(टिप्पणी: दूसरी पंक्ति उत्पादन भी बाहरी आसपास के दोहरे उद्धरण का उत्पादन करेगा)

संबंधित मुद्दे