दिलचस्प पोस्ट
जावास्क्रिप्ट – अनिर्धारित की संपत्ति सेट नहीं कर सकता क्या जावा में अंतिम पैरामीटर मापदंडों को घोषित करने के लिए कोई कार्यक्षमता का कारण है? एसक्यूएल सर्वर के लिए ग्रुप स्ट्रिंग एकत्रीकरण / LISTAGG रेगेक्स पैटर्न को मैच करने के लिए, को छोड़कर जब … / बीच में को छोड़कर संग्रहीत कार्यविधि से रिटर्न वैल्यू प्राप्त करें "SET NAMES" का उपयोग करना चाहे हम ऐसा क्यों नहीं कर सकते सूची <मातृत्व> mylist = ArrayList <child> (); ट्यूपल तुलना पायथन में कैसे काम करता है? क्या मुझे एएसपी.नेट एमवीसी में स्थानांतरित करना चाहिए? दशमलव, फ्लोट और डबल में अंतर। नेट? Node.js / Express.js – ऐप कैसे काम करता है। मैं Excel VBA में एक परिवर्तित सेल का पुराना मान कैसे प्राप्त करूं? जावा – एक रिश्तेदार पथ द्वारा डीएलएल लोड करना और उन्हें एक जार के अंदर छुपाएं क्यों डबल चौड़ाई = 50/110000; उत्पादन 0.000000000000000 है? ईविल जुड़वां समस्या और उपनगरीय विलय

एक निर्देशिका में फ़ाइलों के माध्यम से पावरशेल का उपयोग करके लूप

मैं निर्देशिका में सभी .log फाइलों को देखने के लिए निम्न कोड को कैसे बदल सकता हूँ और सिर्फ एक फ़ाइल नहीं?

मुझे सभी फाइलों के माध्यम से लूप की जरूरत है और उन सभी लाइनों को हटा दें जिनमें "step4" या "step9" शामिल नहीं है वर्तमान में यह एक नई फ़ाइल बनाएगा, लेकिन मुझे यकीन नहीं है कि यहां for each लूप के for each कैसे उपयोग किया जाए (नौसिखिया)।

वास्तविक फाइलें इस प्रकार हैं: 2013 09 03 00_01_29.log मैं आउटपुट फाइलों को या तो उन्हें अधिलेखित करने के लिए या "बाहर" के साथ जोड़ा समान नाम प्राप्त करना चाहता हूं

 $In = "C:\Users\gerhardl\Documents\My Received Files\Test_In.log" $Out = "C:\Users\gerhardl\Documents\My Received Files\Test_Out.log" $Files = "C:\Users\gerhardl\Documents\My Received Files\" Get-Content $In | Where-Object {$_ -match 'step4' -or $_ -match 'step9'} | ` Set-Content $Out 

वेब के समाधान से एकत्रित समाधान "एक निर्देशिका में फ़ाइलों के माध्यम से पावरशेल का उपयोग करके लूप"

इसे एक प्रयास करें:

 Get-ChildItem "C:\Users\gerhardl\Documents\My Received Files" -Filter *.log | Foreach-Object { $content = Get-Content $_.FullName #filter and save content to the original file $content | Where-Object {$_ -match 'step[49]'} | Set-Content $_.FullName #filter and save content to a new file $content | Where-Object {$_ -match 'step[49]'} | Set-Content ($_.BaseName + '_out.log') } 

एक निर्देशिका की सामग्री प्राप्त करने के लिए जो आप उपयोग कर सकते हैं

 $files = Get-ChildItem "C:\Users\gerhardl\Documents\My Received Files\" 

फिर आप इस वैरिएबल पर लूप कर सकते हैं:

 for ($i=0; $i -lt $files.Count; $i++) { $outfile = $files[$i].FullName + "out" Get-Content $files[$i].FullName | Where-Object { !($_ -match 'step4' -or $_ -match 'step9') } | Set-Content $outfile } 

यदि आपको किसी विशेष प्रकार की फाइल के लिए लगातार एक निर्देशिका के अंदर लूप की आवश्यकता है, तो नीचे दिए गए आदेश का उपयोग करें, जो doc फ़ाइल प्रकार की सभी फाइलों को फ़िल्टर करता है

$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc

यदि आपको कई प्रकार के फ़िल्टरिंग करने की आवश्यकता है, तो नीचे दिए गए आदेश का उपयोग करें।

$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc,*.pdf

$fileNames चर नाम के रूप में कार्य करता है, जहां से आप लूप कर सकते हैं और अपने व्यावसायिक तर्क को लागू कर सकते हैं।

अन्य जवाब महान हैं, मैं बस जोड़ना चाहता हूँ … एक अलग दृष्टिकोण PowerShell में प्रयोग करने योग्य है: GNUWin32 उपयोगिताओं को स्थापित करें और लाइन देखने के लिए grep का उपयोग करें / आउटपुट को http://gnuwin32.sourceforge.net/ फ़ाइल में रीडायरेक्ट करें

यह हर बार नई फ़ाइल को ओवरराइट करता है:

 grep "step[49]" logIn.log > logOut.log 

यह लॉग आउटपुट को संलग्न करता है, अगर आप लॉग इन फ़ाइल को अधिलेखित करते हैं और डेटा को रखना चाहते हैं:

 grep "step[49]" logIn.log >> logOut.log 

नोट: वैश्विक रूप से GNUWin32 utils का उपयोग करने में सक्षम होने के लिए आपको बिन फ़ोल्डर को अपने सिस्टम पथ में जोड़ना होगा।