2012-11-18 16 views
6

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

$lines = Get-Content -Path PostBackupCheck-Textfile.txt | Measure-Object -Line 

हालांकि इस लाइनों की संख्या वापसी करता है, यह यह एक राज्य में देता है कि मेरे पाश में एक पूर्णांक की तुलना नहीं की जा सकती:: समस्या यह जा रहा है

for ($i=0; $i -le $lines; $i++) 
    {Write-Host "Line"} 

उत्तर

13

Measure-Object रिटर्न एक TextMeasureInfo वस्तु, नहीं एक पूर्णांक:

PS C:\> $lines = Get-Content .\foo.txt | Measure-Object -Line 
PS C:\> $lines.GetType() 

IsPublic IsSerial Name     BaseType 
-------- -------- ----     -------- 
True  False TextMeasureInfo  Microsoft.PowerShell.Commands.MeasureInfo 

जानकारी आप उपयोग करना 0 द्वारा प्रदान की गई चाहते उस वस्तु कीसंपत्ति:

PS C:\> $lines | Get-Member 


    TypeName: Microsoft.PowerShell.Commands.TextMeasureInfo 

Name  MemberType Definition 
----  ---------- ---------- 
Equals  Method  bool Equals(System.Object obj) 
GetHashCode Method  int GetHashCode() 
GetType  Method  type GetType() 
ToString Method  string ToString() 
Characters Property System.Nullable`1[[System.Int32, mscorlib, Vers... 
Lines  Property System.Nullable`1[[System.Int32, mscorlib, Vers... 
Property Property System.String Property {get;set;} 
Words  Property System.Nullable`1[[System.Int32, mscorlib, Vers... 

संपत्ति एक वास्तविक पूर्णांक रिटर्न यही कारण है कि:

PS C:\> $lines.Lines.GetType() 

IsPublic IsSerial Name     BaseType 
-------- -------- ----     -------- 
True  True  Int32    System.ValueType 


PS C:\> $lines.Lines 
5 

तो आप उपयोग कर सकते हैं कि आपके पाश में:

PS C:\> for ($i = 0; $i -le $lines.Lines; $i++) { echo $i } 
0 
1 
2 
3 
4 
5 
PS C:\> _ 
4

क्या इसके लायक है के लिए, मैंने पाया उपरोक्त उदाहरण लाइनों की गलत संख्या लौटा दी।

$measure = Get-Content c:\yourfile.xyz | Measure-Object 
$lines = $measure.Count 
echo "line count is: ${lines}" 

संभव है कि आप इस सवाल का जवाब आप चाहते हैं देता है यह पता लगाने की दोनों तरीकों का परीक्षण करना चाहते हैं: मैं यह सही गिनती लौटे पाया। "लाइन" का उपयोग करके 20 लौटाया गया और "गणना" 24 लौटा दी। फ़ाइल में 24 लाइनें थीं।

+1

स्पष्ट रूप से 'लाइन्स' संपत्ति में गैर-खाली रेखाओं की संख्या होती है (यानी लंबाई> 0 के साथ रेखाएं)। दस्तावेज इस बात का जिक्र नहीं करता है, यद्यपि। –

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