Jump to content

Excel Zeilen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo,

 

ich arbeite leider nur ganz selten mit der Powershell und bräuchte mal eure Hilfe.

 

Und zwar habe ich folgendes Script ...

 

$excel = New-Object -ComObject Excel.Application
$excel.visible = $True
$workbook = $excel.Workbooks.add()
$sheet = $workbook.worksheets.Item(1)

$path = "C:\Log\TP010\all1404.txt"
$input = Get-Content $path
 foreach ($temp in $input)
{
    $Inhalttrennen = $temp.Split("=")
    $Tx = $Inhalttrennen[2]
    $Rx = $Inhalttrennen[3]
    
    $Ausgabe = "$($Tx) $($Rx)"
    $Ausgabe  >> C:\Log\TP010\split1.txt
}

$path = "C:\Log\TP010\split1.txt"
$input = Get-Content $path
foreach ($temp in $input)
{
    $Inhalttrennen = $temp.Split(" ")
    $Tx = $Inhalttrennen[-5]
    $Rx = $Inhalttrennen[3]
	
	
	$sheet.cells.item(1,1) = "$Tx"
	$sheet.cells.item(1,2) = "$Rx"
}

Wie bekomme ich es hin, dass jeweils der nächste Wert von $Tx in 2,1 geschrieben wird bzw der nächste $Rx Wert in 2,2.

Wäre schön wenn mir einer helfen könnte.

 

 

Mit freundlichen Grüßen

MBudde

Geschrieben

Was steht denn in $Tx und $rx?

Wieso machst du das mit der Zwischendatei split1? Wieso machst du das nicht in einem Schritt?

 

In der ersten Foreach Schleife das speichern in die Excel Datei schreiben.

Du brauchst übrigends noch einen zähler und (z.B. $row) und schreibst dann nach:

$sheet.cells.item($row,1) = "$Tx"
Geschrieben

Vlt. fange ich nochmal ganz vorne an...

 

Eine Zeile aus all1404.txt

03.04.2014 11:16:54  INFO - MONITOR: Media=GPRS / UMTS, Tx=64 Byte, Rx=0 Byte

 

Zeile aus Split1.txt

64 Byte, Rx 0 Byte

 

Im ersten Schritt wird halt ein Split auf das = gemacht und im zweiten halt auf das Leerzeichen.

 

Nachher steht halt in $Tx 64 und in $Rx 0

Genau an dem Zäler hängt es, da komme ich nicht weiter...

Geschrieben

Habe das jetzt abgeändert.

 

$excel = New-Object -ComObject Excel.Application
$excel.visible = $True
$workbook = $excel.Workbooks.add()
$sheet = $workbook.worksheets.Item(1)


$alleLogDateien = get-content "$CopyZiel\$i\all$LogJahr$LogMonat.txt"
$row = 0
foreach ($schneiden in $alleLogDateien)
{
    $schneiden=$schneiden.Split("=").Split(" ")
	
	$Tx=$schneiden[1]
	$Rx=$schneiden[3]
	

$row = $row +1

$sheet.cells.item($row,1) = "$Tx"
$sheet.cells.item($row,2) = "$Rx" 
  }

und bekomme folgenden Fehlermeldung:

 

Fehler beim Aufrufen der Methode, da [system.String[]] keine Methode mit dem Namen "Split" enthält.
Bei C:\Users\mbudde\Desktop\TP_NCP_Log\split.ps1:33 Zeichen:43
+     $schneiden=$schneiden.Split("=").Split <<<< (" ")
    + CategoryInfo          : InvalidOperation: (Split:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Geschrieben (bearbeitet)

Hmm. Beim Split nach = kommt bei mir etwas ganz anderes heraus:

> $foo.Split('=')
03.04.2014 11:16:54  INFO - MONITOR: Media
GPRS / UMTS, Tx
64 Byte, Rx
0 Byte

 

Beim 2. Split, da macht er ein Array daraus.

Du brauchst da eigentlich dann gar nicht mehr splitten:

> $foo.Split(',')[1]
 Tx=64 Byte

 

D.h.

#Tx

> $foo.Split(',')[1].split('=')[1].split(' ')[0]

64

#Rx

> $foo.Split(',')[2].split('=')[1].split(' ')[0]

0

 

Oder auch mit Substring:

$tx = $foo.Split(',')[1].trim()

$tx.Substring($($tx.IndexOf('=')+1),$($tx.IndexOf(' ')-$($tx.IndexOf('=')+1)))

 

Bzw. ausgeschrieben zum besseren Verständnis:

$tx = $foo.Split(',')[1].trim()

$first = $tx.IndexOf('=')+1

$second = $tx.IndexOf(' ')

$tx.Substring($first,$second-$first)

bearbeitet von Dukel
Geschrieben

Danke. Es kommt zwar immer noch ein Fehler aber das Ergebnis stimmt.

 

 

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\mbudde\Desktop\TP_NCP_Log\split.ps1:35 Zeichen:29
+ $Tx=$foo.Split(',')[1].split <<<< ('=')[1].split(' ')[0]
    + CategoryInfo          : InvalidOperation: (split:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Geschrieben

Na klar das mache ich...

 

Hätte aber noch eine kleine Frage und zwar stehen in der Datei vor dem Splitten alle Werte doppelt, das ist der eigentlichen Log Datei geschuldet aus der ich diese bekomme.

Dies sieht dann so aus ...

 

03.04.2014 11:16:54  INFO - MONITOR: Media=GPRS / UMTS, Tx=64 Byte, Rx=0 Byte
03.04.2014 11:16:54  INFO - MONITOR: Media=GPRS / UMTS, Tx=64 Byte, Rx=0 Byte
03.04.2014 11:20:03  INFO - MONITOR: Media=GPRS / UMTS, Tx=144842 Byte, Rx=180219 Byte
03.04.2014 11:20:03  INFO - MONITOR: Media=GPRS / UMTS, Tx=144842 Byte, Rx=180219 Byte
03.04.2014 11:16:54  INFO - MONITOR: Media=GPRS / UMTS, Tx=6400 Byte, Rx=555 Byte
03.04.2014 11:16:54  INFO - MONITOR: Media=GPRS / UMTS, Tx=6400 Byte, Rx=555 Byte
03.04.2014 11:20:03  INFO - MONITOR: Media=GPRS / UMTS, Tx=14484200 Byte, Rx=18021999 Byte
03.04.2014 11:20:03  INFO - MONITOR: Media=GPRS / UMTS, Tx=14484200 Byte, Rx=18021999 Byte

 

Versuche jetzt schon den ganzen morgen jede 2 Zeile zu löschen. allerdings wird das nichts...

Das ist übrigens nur ein kleiner Auszug aus der Datei und die Werte sind immer unterschiedlich.

Geschrieben

Mal ne kurze Gegenfrage: Was willst Du denn am Ende mit dem Ergebnis erreichen? Ausrechnen, wie viel Traffic da durch ging? Ich habe sowas früher an der Kommandozeile automatisiert. Mit uniq.exe kannst Du zum Beispiel die doppelten Zeilen rausfiltern und mit awk.exe die Spalten aufteilen und sogar aufsummieren, wenn die Gesamtsumme von Interesse ist: http://unxutils.sourceforge.net/UnxUpdates.zip

 

Have fun!
Daniel

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...