मैं एक पाठ फ़ाइल है कि इस तरह से एक लंबी स्ट्रिंग से पहले लाइन ब्रेक जोड़ें:पाठ फ़ाइल में विशेष वर्ण के साथ स्ट्रिंग का पता लगाएं और प्रत्येक घटना
ISA*00*GARBAGE~ST*TEST*TEST~CLP*TEST~ST*TEST*TEST~CLP*TEST~ST*TEST*TEST~CLP*TEST~GE*GARBAGE*~
और मैं इसकी आवश्यकता इस तरह देखने के लिए:
~ST*TEST*TEST~CLP*TEST
~ST*TEST*TEST~CLP*TEST
~ST*TEST*TEST~CLP*TEST
मैं पहली स्ट्रिंग को विभाजित करने के लिए हर ~ST
पर एक लाइन जोड़ने की कोशिश की है, लेकिन मैं के लिए मुझे के जीवन ऐसा नहीं कर सकता। मैंने विभिन्न स्क्रिप्ट्स की कोशिश की है, लेकिन मैंने सोचा कि एक खोज/प्रतिस्थापन स्क्रिप्ट सबसे अच्छा काम करेगी।
@echo off
setlocal enabledelayedexpansion
set INTEXTFILE=test.txt
set OUTTEXTFILE=test_out.txt
set SEARCHTEXT=~ST
set REPLACETEXT=~ST
for /f "tokens=1,* delims=~" %%A in ('"type %INTEXTFILE%"') do (
SET string=%%A
SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%!
echo !modified! >> %OUTTEXTFILE%
)
del %INTEXTFILE%
rename %OUTTEXTFILE% %INTEXTFILE%
यहाँ मिले How to replace substrings in windows batch file
लेकिन मैं अटक कर रहा हूँ क्योंकि (1) विशेष वर्ण ~
कोड बिल्कुल काम नहीं करता है। यह मुझे इस परिणाम देता है:
string:~ST=~ST
कोड "~ST"
पीछे उद्धरण चिह्न का उपयोग कर यदि कुछ भी नहीं करता है। और (2) मैं यह नहीं समझ सकता कि ~ST
से पहले लाइन ब्रेक कैसे जोड़ना है।
इसके लिए अंतिम कार्य सभी विभाजनों के बाद ISA*00*blahblahblah
और ~GE*blahblahblah
लाइनों को हटाना होगा। लेकिन मैं ~ST
भाग पर विभाजन पर फंस गया हूं।
कोई सुझाव?
बैच के साथ एक टिल्ड को बदलने के लिए कोई आसान तरीका नहीं है। जेआरईपीएल (बैच/जेस्क्रिप्ट हाइब्रिड) एक अच्छा समाधान है – jeb
प्रारंभिक और अंतिम भागों को पहचानने के मानदंड क्या हैं जिन्हें हटाया जाना चाहिए? '~ एसटी' की पहली घटना से पहले सब कुछ शुरुआती हिस्सा है, और अंतिम भाग '~ जीई' और सब कुछ के बाद? और आपकी इनपुट टेक्स्ट फ़ाइल का आकार क्या है? – aschipfl