[PowerShell] ausgelesene Werte multiplizieren und zurückschreiben

Registriert
Juni 2010
Beiträge
181
Nur so ein hypothetisches Beispiel: der Befehl
Code:
$fld = Select-String -Path mm1.txt -Pattern "jpg"
liefert mir folgendes Ergebnis:
Code:
mm1.txt:2:"P1008.jpg",162.3
mm1.txt:3:"P1009.jpg",33.2
mm1.txt:4:"P1010.jpg",50

Ich möchte nun die Werte, die auf ", folgen (oder ab der 23. Stelle in jeder Zeile kommen) mit 3 multiplizieren und in eine Datei mm2.txt zurückschreiben (mit dem "Vorspann"). In der Datei mm2.txt sollte dann also folgendes stehen:
Code:
x-beliebig
"P1009.jpg",486.9
"P1009.jpg",99.6
"P1010.jpg",150

x-beliebig steht immer in der 1. Zeile von mm1.txt. Das sollte auch in der 1. Zeile von mm2.txt stehen.

Dazu müsste ich nun feststellen, wieviele Zeilen $fld umfasst. Wie mache ich das? Dann muss ich jede Zeile aus $fld extrahieren, mit ihr die Berechnungen ausführen und sie dann wieder in eine andere Variable $fla zusammensetzen. - Bevor ich $fla dann in die Datei mm2.txt zurückschreibe. Wie mache ich das?

Mein Hauptproblem ist wohl am ehesten, dass ich die Befehle nicht kenne, die dazu nötig sind. Für jemanden, der sie schon kennt, ist das sicherlich ganz einfach. Findet sich hier denn jemand, der sich damit auskennt?
 
Du musst den string an einem geeigneten Stelle aufsplitten, z.B.:

$split = $line1.tostring().split(",")

splittet deine Zeile an den Kommata auf und schreibt die einzelnen sub-strings in ein array. Über die array-index kannst Du dann darauf zugreifen und weiterverarbeiten.

Anzahl der Zeilen kannst Du mittels "foreach" machen. Einfach die Datei durchlaufen und eine Variable inkrementieren.

Gruss,
Lalas
 
@vander: nicht sehr hilfreich
@lalas: schon sehr hilfreich, vielen Dank! Trifft die Sache schon ziemlich genau. Das Problem ist da immer noch, dass selbst, wenn ich z.B. weiss (bzw. selbst drauf komme), dass ich über einen Array-Index darauf zugreifen muss, wie das eben in konkreten Befehlen aussieht. Da gibt es so viele Ecken und Enden, über die man da noch stolpern kann. Erst einmal muss man die Befehle dafür kennen und die dann auch noch richtig verwenden. Wenn einem das alles nicht so recht bekannt vorkommt, ist das schon ein Problem. (Da fehlt dann irgendwie bloß "der Denkanstoß". - Bis man sich wieder in die Schreibweise reingefriemelt hat.)
Mittlerweile habe ich das Problem aber schon gelöst. Die bzw. eine sehr ähnliche Problemlösung kannst Du bald hier finden: https://www.computerbase.de/forum/threads/batch-wert-in-textdatei-berechnen.1055989/ Der Thread stammt auch von mir und da dort der Vorlauf größer ist, werde ich meine Antwort mal da reinposten.
@real_general: als ich den Link gesehen habe, war ich schon damit fertig.
 

Ähnliche Themen

Zurück
Oben