2012-09-13 6 views
5

मेरे पास ID, model, और date के साथ फ़ाइलें हैं। फाइलों में 10000_9999-99_10-01-2011.zip के समान प्रारूप है (जहां 10000ID है, 9999-99model है, और निश्चित रूप से 10-01-2011date है)।मैं टेक्स्ट फ़ाइल की लगातार 2 पंक्तियों को कैसे पढ़ सकता हूं और उन्हें अस्थायी चर के रूप में सहेज सकता हूं

मैं इन फ़ाइलों में से date एस को संशोधित करना चाहता हूं, लेकिन ID के साथ सत्रों के बीच अंतराल को बनाए रखना चाहता हूं। उदाहरण के लिए, यदि 2 सत्रों की तारीख 1/1/2011 और 2/1/2011 थी, और मैं अंतिम सत्र दिनांक 8/1/2012 पर अपडेट करना चाहता था, तो पहले सत्र में दिनांक 7/1/2012 होगा।

वर्तमान में मेरे कोड इस तरह दिखता है:

@echo off 
setlocal enabledelayedexpansion 
del filedates.txt 
FOR /F "tokens=1,2,3,4,5 delims=_" %%a in (filenames.txt) do @echo %%c >>filedates.txt 
FOR /F "tokens=1,2,3 delims=-" %%a in (filedates.txt) do (
    echo %%a%%b 
) 

उत्पादन इस के समान है (वर्ष महीना):

201107 
201109 
201204 
etc.. 

मैं filedates.txt में एक पंक्ति को पढ़ने के लिए देख रहा था , इस तिथि को एक चर के रूप में स्टोर करें, फिर अगली पंक्ति पढ़ें, और इसे एक और चर के रूप में स्टोर करें। इस तरह से दो चरों की तुलना अधिक से अधिक देखने के लिए की जा सकती है, और प्रक्रिया जारी रहेगी।

+2

एमएस-डॉस ने '/ F' पैरामीटर का उपयोग करके विस्तारित लूप का समर्थन नहीं किया है, इसलिए आपको विंडोज (एनटी या बाद में) का उपयोग करना होगा। –

+0

जिज्ञासा से बाहर, क्योंकि आप स्पष्ट रूप से विंडोज के एक हालिया संस्करण ('सेटलोकल' और 'फॉर/एफ' सिंटैक्स के आधार पर) चल रहे हैं, क्या ऐसा कोई कारण है कि आप इसे 'पावरशेल' में नहीं कर रहे हैं, जो कि यह बहुत आसान बना देगा? –

+0

मैं एक कोड पर काम कर रहा हूं जो लगभग पूरा हो गया है। यह सब कोड कमांड लाइन का उपयोग करके लिखा गया है, अन्यथा मैं पावरहेल का उपयोग करूंगा –

उत्तर

2

एक समय में दो लाइनों को पढ़ने का एक सीधा तरीका इनपुट फ़ाइल में लाइनों को for /f लूप के साथ संसाधित करना है, और केवल संख्याबद्ध लाइनों पर "प्रतिक्रिया" है। यहाँ एक नमूना कोड:

@echo off 
setlocal enabledelayedexpansion 
set evenflag=1 
for /f "tokens=*" %%x in (filedates.txt) do set x1=!x2! && set x2=%%x && (
set /a evenflag^^=1 && if !evenflag!==1 (
    rem Do something with !x1! and !x2! 
)) 

यहाँ चर evenflag (यहां तक ​​कि लाइनों, 0 अजीब लाइनों के लिए के लिए 1) एक बूलियन ध्वज जो इंगित करता है वर्तमान लाइन नंबर भी है कि क्या है। x1 और x2 वर्तमान में लाइनों की पढ़ी जोड़ी को पकड़ें।

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

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