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

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

Link zu diesem Kommentar

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...

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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...