मैं Windows बैच फ़ाइल में एक ब्रेसिज़ सीमांकित पाठ फ़ाइल कैसे पढ़ सकता हूं?


2

मैं कुछ लाइनों वाली फ़ाइल txt है, और यहाँ नीचे मेरी txt फ़ाइल है

rule.txt
----------------------------------------
direct
replace{100,1011}
replace{india,o891}
replace{1100,101}
-----------------------------------------

मुझे बैच फ़ाइल का उपयोग करके खुले ब्रेसिज़ और बंद ब्रेस के बीच की संख्या पर कब्जा करने की आवश्यकता है।


1
(१) नामों के रूप में, ( तथा ) कहा जाता है कोष्ठक। वे ब्रेसिज़ के समान दिखते हैं: { तथा }। (२) आपने क्या शोध किया है? क्या तुमने कोशिश की?
Scott

शुरुआती बिंदु शायद ...। FOR /F "USEBACKQ DELIMS={, TOKENS=2" %F IN ("C:\folder\text.txt") DO ECHO %~F तथा FOR /F "USEBACKQ DELIMS=}, TOKENS=2" %F IN ("C:\folder\text.txt") DO ECHO %~F, और फिर आप क्रम में दोनों को समेटने के लिए कुछ तर्क का उपयोग कर सकते हैं और शायद गैर को बदल सकते हैं int शून्य के साथ या आपको जो भी चाहिए। आपकी आवश्यकताएं अस्पष्ट हैं, लेकिन मैं बैच के बजाय इस तरह से कुछ के लिए खुद को PowerShell के साथ निपटाऊंगा, लेकिन वे कुछ बैच हैं जो शायद अस्पष्ट आवश्यकताओं के साथ शुरुआती शुरुआती बिंदु हैं।
Pimp Juice IT

जवाबों:


2

एक बैच फ़ाइल के साथ:

:: Q:\Test\2018\12\26\SU_1387726.cmd
@Echo off
For /F "tokens=2,3 delims={,}" %%A IN (
   ' findstr "{" rule.txt'
) DO ECHO:%%A =^> %%B

नमूना उत्पादन:

> Q:\Test\2018\12\26\SU_1387726.cmd
100 => 1011
india => o891
1100 => 101

1

यदि आप घुंघराले ब्रेस के अंदर डेटा को कैप्चर करने की कोशिश कर रहे हैं, तो आप निम्न अधिकार प्राप्त कमांड का उपयोग कर सकते हैं।

Get-ChildItem rule.txt | Select-String -Pattern '(?<={).*?(?=})' | % { $_.Matches } | % { $_.Value }

उत्पादन

100,1011
india,o891
1100,101
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.