Powershell - zeilenweise Variablen aus TXT Datei einlesen
Hallo,
ich habe folgendes Problem. Ich möchte meinen alten Batch Code in Powershell verwenden und finde keinen passenden Lösungsansatz.
Ich möchte zeilenweise Variablen getrennt durch Tab oder gerne auch durch ein anderes Zeichen (Bsp. ";") einlesen.
In der CMD Batch sah das folgendermaßen aus:
set source=d:\test.txt
for /f "tokens=1-5" %%i in (%source%) do echo %%i %%j %%k %%l
POWERSHELL:
mit "Get-Content" kann man zwar den ganzen Text in eine Variable einlesen, jedoch finde ich keine möglichkeit wie in der obigen Batch.
$file = Get-Content d:\test.txt
write $file
Hat hier jemand eine Idee?
ich habe folgendes Problem. Ich möchte meinen alten Batch Code in Powershell verwenden und finde keinen passenden Lösungsansatz.
Ich möchte zeilenweise Variablen getrennt durch Tab oder gerne auch durch ein anderes Zeichen (Bsp. ";") einlesen.
In der CMD Batch sah das folgendermaßen aus:
set source=d:\test.txt
for /f "tokens=1-5" %%i in (%source%) do echo %%i %%j %%k %%l
POWERSHELL:
mit "Get-Content" kann man zwar den ganzen Text in eine Variable einlesen, jedoch finde ich keine möglichkeit wie in der obigen Batch.
$file = Get-Content d:\test.txt
write $file
Hat hier jemand eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276969
Url: https://administrator.de/contentid/276969
Ausgedruckt am: 23.11.2024 um 12:11 Uhr
12 Kommentare
Neuester Kommentar
Stichwort: Import-CSV
Damit kannst du den Delimiter angeben und die Spalten als Eigenschaften des CSV-Objekts für jede Zeile ansprechen...
Hierbei gehe ich davon aus das deine Datei Überschriften hat. Wenn nicht musst du sie mit dem Parameter -header angeben.
Natürlich geht's auch alternativ so:
Gruß jodel32
Damit kannst du den Delimiter angeben und die Spalten als Eigenschaften des CSV-Objekts für jede Zeile ansprechen...
$csv = Import-CSV 'c:\datei.txt' -Delimiter ';'
$csv | %{
Write-Host $_.'NameDerSpalte1'
Write-Host $_.'NameDerSpalte2'
# usw.
}
Natürlich geht's auch alternativ so:
$lines= gc 'c:\datei.txt'
$lines | %{
$cols = $_.Split(';')
$cols | %{
write-host $_
}
}
Gruß jodel32
hab ich dich oben geschrieben:
Die Foreach-Schleife arbeitet dabei alle Zeilen hintereinander ab ...
csv = Import-CSV 'c:\datei.txt' -Delimiter ';'
$csv | %{
Write-Host $_.username
Write-Host $_.password
# usw.
}
$csv.username
$csv | select -index 5 -Expand username
Stichwort where-object ....
$csv | ?{$_.surname -eq 'mustermann'}
Habe ich doch oben schon schon mehrere ziemlich simple Varianten gepostet. Ich weiß nicht wie simpel du noch möchtest ??
Also nochmal:
get-content ließt die Zeilen in Array aus Strings ein, d.h. also das du die Zeilen mit dem Index ansprechen kannst (Achtung: Das Array ist 0-basiert).
Einfach ab und zu mal die Doku lesen, das wirkt wahre Wunder, als nur Trial & Error zu betreiben...
Also nochmal:
get-content ließt die Zeilen in Array aus Strings ein, d.h. also das du die Zeilen mit dem Index ansprechen kannst (Achtung: Das Array ist 0-basiert).
$var = get-content "d:\test.txt"
#Zeile 1 ausgeben:
write-host $var
#Zeile 2 ausgeben:
write-host $var[1]
# usw