mymomo
Goto Top

Textfile per Batch editieren

Moin!

Ich würde gerne ein Textfile automatisiert editieren lassen.

Ich lasse per tree die Verzeichnisstruktur mehrerer verschiedener Ordner, sowie dessen Inhalte, in ein Textdokument schreiben.

Zunächst bin ich hier über eine Batch gegangen, doch hier wurden die Umlaute nicht richtig wiedergegeben. Der Optik wegen und um es einfach vernünftig zu haben, wird das inzwischen über powershell erledigt, wodurch dieses Problem nun der Vergangenheit angehört.

Nun stören mich aber noch unnötige Textzeilen, welche immer gleich lauten. Zum Beispiel der Hinweis, dass es keine weiteren Unterordner gäbe. Oder dass nun die Auflistung der Festplatte mit der Seriennummer xy kommen wird.

Das ist einfach unnötig und ein wenig störend. Drum frage ich mich, ob man sowas eventuell editieren könnte? Quasi suchen und ersetzen oder so?

Besten Dank schon einmal!

Content-Key: 213958

Url: https://administrator.de/contentid/213958

Printed on: April 19, 2024 at 03:04 o'clock

Member: colinardo
colinardo Aug 10, 2013 updated at 08:00:34 (UTC)
Goto Top
Hi mymomo,
warum machst du das nicht gleich mit powershell wenn du sowieso schon damit arbeitest.
Beispiel:
$newFileContent = get-content C:\deinFile.txt | %{$_.Replace("String der zu ersetzen ist","Ersetzungsstring")}  
set-content C:\deinfile.txt -Value $newFileContent

Grüße Uwe
Member: mymomo
mymomo Aug 10, 2013 at 08:09:15 (UTC)
Goto Top
weil ich nicht wusste das powershell das kann^^... nochmals besten Dank an Dich ;o). Werde ich gleich mal testen.
Member: colinardo
colinardo Aug 10, 2013 updated at 11:35:18 (UTC)
Goto Top
Alternativ wenn du bestimmte Zeilen ganz rauslöschen willst kannst du dies so machen:
(Den Inhalt der unerwünschten Zeile legst du in Zeile 5 des Scripts fest [ mit Wildcard-Support])
$filename = "C:\deinFile.txt"  
$f = gc $filename
$newContent = ""  
foreach ($zeile in $f){
    if ($zeile -notlike "*Verzeichnis: *"){  
        $newContent += "$zeile `r`n"  
    }
}
$newContent
set-content -Path $filename -Value $newContent
Member: mymomo
mymomo Aug 10, 2013 updated at 11:23:54 (UTC)
Goto Top
ich bekomm es net hin *mpfh* :o(

möchte es ungern vorgekaut bekommen, zumal du die arbeit ja schon fast allein gemacht hast, aber selbst die anpassung bekomm ich nicht hin :o(.

mein pfad sieht wie folgt aus:
D:\_TEMP\_test

die textdatei die angepasst werden soll heißt:
test.txt

der inhalt der gelöscht werden soll heißt:
Volumeseriennummer : 00007FFF 22E1:5C6E

kannst mir nochma helfen?^^
Member: colinardo
colinardo Aug 10, 2013 updated at 11:34:20 (UTC)
Goto Top
$filename = "D:\_TEMP\_test\test.txt"  
$f = gc $filename
$newContent = ""  
foreach ($zeile in $f){
    if ($zeile -notlike '*Volumeseriennummer : *'){  
        $newContent += "$zeile `r`n"  
    }
}
set-content -Path $filename -Value $newContent
Member: mymomo
mymomo Aug 10, 2013 at 12:55:21 (UTC)
Goto Top
mh... ok, so hatte ich es eigentlich auch schon... wahrscheinlich habe ich irgendwo nen " oder ' verschluckt... dachte schon ich wäre ganz dämlich...
nu klappts... und NOCHMALS besten dank ;o)
Member: colinardo
colinardo Aug 10, 2013 at 16:56:38 (UTC)
Goto Top
Den Beitrag bitte noch als markieren. Danke.
Member: sgdk2009
sgdk2009 Aug 14, 2013 at 10:46:49 (UTC)
Goto Top
Hallo Colinardo,

ich habe dein Script ein wenig für meine Zwecke angepasst und komme nicht weiter:

$filename = "D:\TEST.TXT"
$filenameNew = "D:\TEST1.TXT"
$f = gc $filename
$newContent = ""
foreach ($zeile in $f){
if ($zeile -like "T*"){
$newContent += "$zeile`n`r"
}
}
$newContent
set-content -Path $filenameNew -Value $newContent

In der neuen Datei TEST1.TXT stehen alle Zeilen die mit T* beginnen. Nur leider alle in einer Zeile. Der Line break `n scheint nicht zu klappen.
Allerdings, wenn ich das Script im PowerShell Editor ausführe wird mir das Ergbnis richtig angezeigt (mit LB) aber in der TXT Datei fehlt er.

Hast du eine Idee?

Gruß
Daniel
Member: colinardo
colinardo Aug 14, 2013 at 10:49:33 (UTC)
Goto Top
Der Linebreak muss die richtige Reihenfolge haben:
`r`n
Grüße Uwe
Member: sgdk2009
sgdk2009 Aug 14, 2013 at 10:53:09 (UTC)
Goto Top
Oh man. Jetzt klappt's.
Danke für die wirklich schnelle Hilfe.

Gruß
Daniel