Powershell Zeichen "IM" Dokument ändern ohne neues zu erstellen

Retsam-Master

Banned
Registriert
Jan. 2019
Beiträge
1.100
Hallo leute

Ich möchte ein Sonderzeichen
"&" durch "&" ersetzen

Ich habe lange gegoogelt aber keine Lösung gefunden.
Ich habe viele Text Dateien bei denen ich genau die Text Datei behalten möchte.
Ich will keine Zusätzliche Textdatei erstellen sondern es gleich in der Originaldatei ersetzen.

Wie geht sowas falls überhaupt möglich?
Gerne über Powershell
 
ääh nach dem Testen nicht mehr daran gedacht zurück zu schreiben ;)
 
Ich mach sowas mit Notepad++ und der Suchen und Ersetzen Funktion in allen Dateien in einem Verzeichnis. Auch wenn das jetzt nichts mit Powershell zu tun hat. ;)
 
  • Gefällt mir
Reaktionen: KickiSurface
@alexx79 danke werde ich mir anschauen

@PatrickS3
Der Unterschied dabei ist folgender: manuell müsste ich es jeden Tag machen, per Powershell macht es die Aufgabenplanung für mich ;)
 
In Perl relativ einfach, in Powershell möglich aber komplizierter. Hier beispielsweise eine komfortable in-place-Ersetzung in Perl, die auch noch Backups der Originale erzeugt und vorhandene '&' nicht anfasst:
Perl:
use strict;
use warnings;

our $^I = '.bak';  # Erzeuge ein Backup der Originaldatei

while (my $file = glob '*.txt') {  # Alle *.txt-Dateien
  my $n = 0;                       # Anzahl der Ersetzungen
  print "Bearbeite $file ";        # Ausgabe fuer Benutzer

  our @ARGV = ($file);             # naechste Datei oeffnen
  while ( <ARGV> ) {               # und zeilenweise lesen
     $n++ while s/\&(?!amp;)/&amp;/; # Ersetzen wenn nicht schon ersetzt
     print
  }

  print '+' x $n,"\n"              # Ausgabe der Anzahl der Ersetzungen
}
gerade getestet mit 3 Dateien unter Windows 10, von denen 2 ein freies '&' und alle 3 ein '&amp;' enthalten:
$ perl samp.pl Bearbeite datei1.txt + Bearbeite datei2.txt Bearbeite datei3.txt +
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: alexx_pcfreak
Ok, wusste ich nicht. Ich dachte das wäre eine einmalige Sache.
 
Aber jetzt mal ohne Quatsch
Retsam-Master schrieb:
Ich habe lange gegoogelt aber keine Lösung gefunden.
Wonach hast du gesucht? Du kannst mir doch nicht erzählen dass du zu sowas nix findest.

Ich möchte es nur verstehen, es passiert hier in letzter Zeit öfters bei Powershell und Batch Fragen. Das sind doch alles Dinge, die schon mal jemand gefragt hat und wo es dann meist auf StackOverflow mindestens eine Antwort gibt. Klar, man muss das Skipt danach evtl. anpassen, aber die Basics findet man immer. Den Rest muss man sich dann auch einfach mal aneigenen und lernen

Ich hab jetzt eingegeben: "windows powershell replace character in file"
Erster Treffer: https://stackoverflow.com/questions...urrence-of-a-string-in-a-file-with-powershell

Oder du nimmst in Zukunft Linux und das gute alte sed
 
  • Gefällt mir
Reaktionen: alexx_pcfreak
Der Autor war bisher bei keinem seiner/ihrer Themen in der Lage, die Googlesuche richtig zu benutzen ...
 
@abcddcba
@alexx79
Das geht nicht da es nur für 1 File ist und nicht für alle...
Da braucht man den Namen des Files
 
Ok, ja nur in einer Datei - mein "Fehler"
Aber ganz ehrlich, wo ist jetzt das Problem? Was wäre jetzt der nächste logische Schritt? Das musst du doch erkennen und sehen, oder nicht? Ich hab doch gesagt, man findet selten genau die eine Lösung für sein evtl. komplexeres Problem - aber das ist doch auch nicht schlimm. Du hast jetzt hier eine Teillösung, also musst du jetzt noch etwas finden was es für alle Dateien macht, stimmt's?

Wie wäre es also mit einer Suche nach einem Befehl/skipt/Code Snippet um alle Dateien zu findet und abzuarbeiten? Sowas wie Schleife wäre auch n gutes Keyword. Die das andere Skript resp. den Befehl abarbeitet? Kriegst du das hin? Weißt du wonach man sucht? Englisch kannst du ja sicher. Schon mal nach "powershell iterate files" gesucht? Weißt du was ich da gefunden habe, wieder als 1. Treffer? Ja genau, https://stackoverflow.com/questions/18847145/loop-through-files-in-a-directory-using-powershell

Jetzt kombinierst du beides und dann müsste es eigentlich gehen. Versuch mal bitte.

Was ich mich noch frage: In deiner anderen Frage hast du zumindest schon den Befehl dir gelernt. Weißt du eigentlich gar nicht was die ganzen Zeilen bedeuten bzw. tun? Oder nimmst du es einfach so hin was dir dort als Skript gegeben wurde? Das wäre nämlich fatal und bringt dir langfristig nix. Mal abgesehen davon dass man dir dann auch locker mal ne Zeile unterjubeln kann, die dein System negativ beeinflussen. Also bitte nix copy + paste ohne wenigstens versucht haben es zu verstehen. Sonst lieber nachfragen, oder hey - Google Suche zur Powershell Dokumentation.
 
@abcddcba deine Bemühungen in allen Ehren, aber er braucht etwas, was er einfach ausführen kann. Mehr is nicht.
 
@abcddcba
@alexx79

Klar, ich lerne anhand beispiele die funktionieren.
Was die Zeichen beudeten kann ich ja nur so verstehen.
Ich hab keine Lust und Zeit "Hello World" auszugeben und so einen mist zu lernen.
Mit effektiven Beispielen lernt man viel mehr.. Klar ist der Einstieg so schwerer.

edit: habs hinbekommen
 
Zuletzt bearbeitet:
Zurück
Oben