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-ID: 213958

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

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

colinardo
colinardo 10.08.2013 aktualisiert um 10:00:34 Uhr
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
mymomo
mymomo 10.08.2013 um 10:09:15 Uhr
Goto Top
weil ich nicht wusste das powershell das kann^^... nochmals besten Dank an Dich ;o). Werde ich gleich mal testen.
colinardo
colinardo 10.08.2013 aktualisiert um 13:35:18 Uhr
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
mymomo
mymomo 10.08.2013 aktualisiert um 13:23:54 Uhr
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?^^
colinardo
colinardo 10.08.2013 aktualisiert um 13:34:20 Uhr
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
mymomo
mymomo 10.08.2013 um 14:55:21 Uhr
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)
colinardo
colinardo 10.08.2013 um 18:56:38 Uhr
Goto Top
Den Beitrag bitte noch als markieren. Danke.
sgdk2009
sgdk2009 14.08.2013 um 12:46:49 Uhr
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
colinardo
colinardo 14.08.2013 um 12:49:33 Uhr
Goto Top
Der Linebreak muss die richtige Reihenfolge haben:
`r`n
Grüße Uwe
sgdk2009
sgdk2009 14.08.2013 um 12:53:09 Uhr
Goto Top
Oh man. Jetzt klappt's.
Danke für die wirklich schnelle Hilfe.

Gruß
Daniel