Aus .txt bei bestimmtem Wort eine .bat starten
Hallo,
ich bin der neue Hier Hoffe auf eine tolle Zeit hier bei / mit euch !
Zu meinem aktuellen Problem, zudem ich leider in der Suche und bei google noch keine Lösung gefunden habe,
Ich möchte gerne eine Batch haben welche ein .txt file auf bestimmte Stichwörter kontrolliert.
Ist z.B. in diesem .txt file irgendwo das Wort TESTWORT vorhanden soll eine bestimmte, weitere Batch datei gestartet werden, Ist in dem .txt das Wort TESTWORT2 vorhanden soll eine andere batch gestartet werden usw.
ich komm da einfach nicht weiter, wie ist das am besten möglich ?
weiterhin bin ich noch auf der Suche wie ich bestimmte Sonderzeichen mittels batch aus .txt datein herrauslöschen kann.... mit Worten funktioniert das super aber möchte ich in einem textfile z.B. überall mittels batch den * aus dem Inhalt entfernen klappt das nicht Dafür jemand nen Tipp ???
Wäre super wenn ihr mir Tipps oder Hilfestellungen geben könntet !
Vielen Dank im vorraus !
Mfg Beatzler
ich bin der neue Hier Hoffe auf eine tolle Zeit hier bei / mit euch !
Zu meinem aktuellen Problem, zudem ich leider in der Suche und bei google noch keine Lösung gefunden habe,
Ich möchte gerne eine Batch haben welche ein .txt file auf bestimmte Stichwörter kontrolliert.
Ist z.B. in diesem .txt file irgendwo das Wort TESTWORT vorhanden soll eine bestimmte, weitere Batch datei gestartet werden, Ist in dem .txt das Wort TESTWORT2 vorhanden soll eine andere batch gestartet werden usw.
ich komm da einfach nicht weiter, wie ist das am besten möglich ?
weiterhin bin ich noch auf der Suche wie ich bestimmte Sonderzeichen mittels batch aus .txt datein herrauslöschen kann.... mit Worten funktioniert das super aber möchte ich in einem textfile z.B. überall mittels batch den * aus dem Inhalt entfernen klappt das nicht Dafür jemand nen Tipp ???
Wäre super wenn ihr mir Tipps oder Hilfestellungen geben könntet !
Vielen Dank im vorraus !
Mfg Beatzler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 107566
Url: https://administrator.de/contentid/107566
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
27 Kommentare
Neuester Kommentar
Hallo Beatzler und willkommen im Forum!
Zu Deiner ersten Frage:
Das Ersetzen erfolgt (ohne Erstellung einer Sicherungskopie) unmittelbar "in der Datei".
Grüße
bastla
Zu Deiner ersten Frage:
findstr /c:"TESTWORT" "D:\Die Datei.txt">nul && "C:\Scripts\Weiterer Batch.bat"
bestimmte Sonderzeichen mittels batch aus .txt datein herrauslöschen
Ob das mit Batch (einigermaßen schmerzfrei) zu machen ist, hängt davon ab, wie Du "Sonderzeichen" definierst - einfacher ist es auf jeden Fall per VBScript (bzw Batch mit VBS) zu lösen, zB:@echo off & setlocal
set "Datei=D:\Die Datei.txt"
set "Zeichen=*"
set R=%temp%\ReplaceChars.vbs
>%R% echo Set a=WScript.Arguments:F=a(0):C=a(1):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll:fso.CreateTextFile(F,True).Write Replace(T,C,"")
cscript //nologo %R% "%Datei%" "%Zeichen%"
Grüße
bastla
Hallo Beatzler!
Vielleicht ist Dir das "Replace" im (VBS-)Code aufgefallen - derzeit wird aufgrund der Schreibweise
im Text das übergebene Zeichen (Character - ab und an mag ich's ausländisch ) durch den zwischen den folgenden Anführungszeichen stehenden Text (also schlichtweg nix) ersetzt. Wenn daher anstelle des Zeichens (*) ein Punkt hin soll:
Schöner wäre das natürlich mit einer zusätzlichen Variablen, aber funktionieren wird's auch so.
Grüße
bastla
Vielleicht ist Dir das "Replace" im (VBS-)Code aufgefallen - derzeit wird aufgrund der Schreibweise
... Replace(T,C,"")
... Replace(T,C,".")
Grüße
bastla
Hallo Beatzler!
Würde es sich da nicht anbieten, gleich die erste Batchdatei einen "richtigen" Job machen zu lassen, indem diese schon alle benötigten Informationen im Klartext schreibt?
Falls das nicht möglich sein sollte: Würde ein einfaches Ersetzen der Codes durch die "Langfassung" genügen, oder enthält die "Meldung.txt" noch zusätzliche Informationen? Und: Wie ist die Meldungsdatei grundsätzlich aufgebaut - jeder Code in einer eigenen Zeile?
Grüße
bastla
Würde es sich da nicht anbieten, gleich die erste Batchdatei einen "richtigen" Job machen zu lassen, indem diese schon alle benötigten Informationen im Klartext schreibt?
Falls das nicht möglich sein sollte: Würde ein einfaches Ersetzen der Codes durch die "Langfassung" genügen, oder enthält die "Meldung.txt" noch zusätzliche Informationen? Und: Wie ist die Meldungsdatei grundsätzlich aufgebaut - jeder Code in einer eigenen Zeile?
Grüße
bastla
Hallo Beatzler!
Mit dem folgenden VBScript sollten direkt "in der Datei" alle vorgegebenen Ersetzungen durchgeführt werden:
Aufzurufen ist das Script mit Übergabe der Meldungsdatei, also etwa
Weitere Ersetzungspaare können nach dem Muster der Zeilen 3 und 4 eingefügt werden, wobei nach dem letzten dieser Paare (wie in Zeile 5 gezeigt) eine schließende Klammer folgen muss.
Bei der Suche nach einem zu ersetzenden Wort (Textteil) wird nicht zwischen Groß- und Kleinschreibung unterschieden (gefunden würden also auch "nr.", "nR." oder "NR.").
Falls das aktuelle Trennzeichen "=" selbst in einem Such- oder Ersetzungstext vorkommen sollte, kannst Du es gegen ein anderes Zeichen (etwa "$") ersetzen und müsstest dieses dann in Zeile 7 eintragen und in den Zeilen davor anstelle des derzeitigen "=" verwenden.
Grüße
bastla
Mit dem folgenden VBScript sollten direkt "in der Datei" alle vorgegebenen Ersetzungen durchgeführt werden:
'Angabe der Ersetzungspaare als "TextAlt=TextNeu"
Ers = Array(_
"Nr.=Nummer",_
"1234=Test",_
"4321=Versuch")
Trenn = "=" 'Trennungszeichen zwischen TextAlt und TextNeu
If WScript.Arguments.Count > 0 Then
Datei = WScript.Arguments(0)
Else
WScript.Quit
End If
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 0 To UBound(Ers)
Ers(i) = Split(Ers(i), Trenn)
Next
Text = fso.OpenTextFile(Datei).ReadAll
For i = 0 To UBound(Ers)
Text = Replace(Text, Ers(i)(0), Ers(i)(1), 1, -1, vbTextCompare)
Next
fso.CreateTextFile(Datei, True).Write Text
cscript //nologo C:\Scripts\Ersetzungen.vbs "D:\Meldung.txt"
Bei der Suche nach einem zu ersetzenden Wort (Textteil) wird nicht zwischen Groß- und Kleinschreibung unterschieden (gefunden würden also auch "nr.", "nR." oder "NR.").
Falls das aktuelle Trennzeichen "=" selbst in einem Such- oder Ersetzungstext vorkommen sollte, kannst Du es gegen ein anderes Zeichen (etwa "$") ersetzen und müsstest dieses dann in Zeile 7 eintragen und in den Zeilen davor anstelle des derzeitigen "=" verwenden.
Grüße
bastla
Hallo Beatzler!
Könntest Du eine Ausgangsdatei und das Ergebnis (als "" formatiert) sowie Deine Ersetzungen posten? Eigentlich "erfindet" das Script nichts dazu - Anführungszeichen, die vorher nicht da waren, sollten es nachher genauso wenig sein, wie Leerzeichen.
Eine Erklärung für Letztere wäre, dass in der Ersetzungsliste nach dem "=" ein Leerzeichen steht - dieses würde dann als Teil des Ersetzungswortes betrachtet.
Grüße
bastla
Könntest Du eine Ausgangsdatei und das Ergebnis (als "" formatiert) sowie Deine Ersetzungen posten? Eigentlich "erfindet" das Script nichts dazu - Anführungszeichen, die vorher nicht da waren, sollten es nachher genauso wenig sein, wie Leerzeichen.
Eine Erklärung für Letztere wäre, dass in der Ersetzungsliste nach dem "=" ein Leerzeichen steht - dieses würde dann als Teil des Ersetzungswortes betrachtet.
Grüße
bastla
Hallo Beatzler!
Voraussetzung für einen automatisierten Ablauf sind eindeutigie Kriterien - wenn Du also etwa festlegen kannst, dass für die Ersetzung eine exakte Übereinstimmung (daher auch hinsichtlich Groß-/Kleinschreibung) erforderlich ist, wäre das obige Problem ev durch konsequente Großschreibung der Wortkürzel und Änderung des
Andere Möglichkeit: Unter der Annahme, dass vor und/oder nach dem Wortkürzel ein Leerzeichen steht, kannst Du diese(s) Leerzeichen in die Ersetzungsdefinition einbeziehen:
Gibt es allerdings keine allgemein gültige Regel, in welchem Fall die Zeichenfolge "AS" ersetzt werden soll, lässt sich das nicht per Script lösen ...
Grüße
bastla
Voraussetzung für einen automatisierten Ablauf sind eindeutigie Kriterien - wenn Du also etwa festlegen kannst, dass für die Ersetzung eine exakte Übereinstimmung (daher auch hinsichtlich Groß-/Kleinschreibung) erforderlich ist, wäre das obige Problem ev durch konsequente Großschreibung der Wortkürzel und Änderung des
Replace()
auf folgende Schreibweise zu lösen:Text = Replace(Text, Ers(i)(0), Ers(i)(1))
" AS = Allgemeine Sprache ",_
Grüße
bastla