Mit Batch nach einem String in allen bat Dateien auf C suchen und die gefundenen evtl. löschen
Hallo liebe Forummitglieder,
Ich habe schon viele nützliche Beiträge bei Ihnen gefunden und bin daher sehr begeistert von Ihren Forum.
Heute nun habe ich eine Frage an Sie und schätze ihre Hilfe sehr. Bitte Tipps geben wenn ich Fehler mache (erster Beitrag).
Ich möchte eine .bat Datei schreiben die meine gesamten .bat Dateien nach einer Zeichnefolge durchsucht und bei Befund mir die entsprechenden Pfade mit Dateinamen ausgibt mit der Option gezielte Dateien zu löschen.
Hoffentlich ist das Möglich. Bin noch Anfänger in Batch-Programmierung und will mich unter anderem damit auch weiterbilden.
Vielen Dank im Foraus.
Ich habe schon viele nützliche Beiträge bei Ihnen gefunden und bin daher sehr begeistert von Ihren Forum.
Heute nun habe ich eine Frage an Sie und schätze ihre Hilfe sehr. Bitte Tipps geben wenn ich Fehler mache (erster Beitrag).
Ich möchte eine .bat Datei schreiben die meine gesamten .bat Dateien nach einer Zeichnefolge durchsucht und bei Befund mir die entsprechenden Pfade mit Dateinamen ausgibt mit der Option gezielte Dateien zu löschen.
Hoffentlich ist das Möglich. Bin noch Anfänger in Batch-Programmierung und will mich unter anderem damit auch weiterbilden.
Vielen Dank im Foraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 284557
Url: https://administrator.de/contentid/284557
Ausgedruckt am: 29.03.2024 um 08:03 Uhr
8 Kommentare
Neuester Kommentar
N`abend,
wenn du dich weiterbilden willst, solltest du dann nicht an dieser Stelle deinen bisherigen Code präsentieren, damit wir dich auf Fehler hinweisen?
Powershell:
Grüße,
Tiberius
wenn du dich weiterbilden willst, solltest du dann nicht an dieser Stelle deinen bisherigen Code präsentieren, damit wir dich auf Fehler hinweisen?
Powershell:
clear-host
$path = ".\Desktop\test"
$pattern = "txt"
$item = gci $path -Filter *.$pattern -Recurse
foreach($i in $item){
$t = $i | Select-String "test"
$t = $t.path
remove-Item $t
}
Grüße,
Tiberius
Moin Moin "SevenX",
guckst du
Gruß grexit
p.s. zum Weiterbilden würde ich keine Batch mehr nehmen .... das ist doch sowas von altbacken.
guckst du
@echo off & setlocal enabledelayedexpansion
set "suchstring=BlaBla"
for /f "delims=" %%a in ('findstr /ism /c:"%suchstring%" "C:\Ordner\*.bat" 2^>nul') do @(
echo Suchstring "%suchstring%" gefunden in Datei: "%%a"
choice /c jn /m "Wollen sie die Datei loeschen ?"
if !errorlevel! == 1 del "%%a"
)
p.s. zum Weiterbilden würde ich keine Batch mehr nehmen .... das ist doch sowas von altbacken.
Den Code hab ich schon 10.000 mal ausprobiert und umgestellt er funktioniert einfach nicht.
Sorry hatte den Schalter /m bei findstr vergessen, jetzt läufts problemlos ... ist oben korrigiertKann man aber auch freundlicher sagen, wenn man hier schon Hilfe bekommt.
Also zur Erläuterung der Befehlsfolgen:
Schaltet die Befehlsausgabe still und die verzögerte Variablenerweiterung ein.
@echo off & setlocal enabledelayedexpansion
Setzt den Suchstring in eine Variable
set "suchstring=BlaBla"
Mit einer FOR-Schleife wird das Ergebnis der Suche mit findstr ausgewertet. Findstr durchsucht in dem angegebenen Ordner inkl. aller Unterordner nach *.bat Dateien die den Suchstring enthalten. Parameter /i = Case-Insensitive search, /m = nur die Pfade ausgeben, /s = durchsucht auch Unterordner, /c: = Sucht nach Zeichenfolge buchstabengetreu. findstr /? liefert dir die Hilfe zu findstr !
Als Ausgabe gibt Findstr die Pfade der gefundenen Dateien in der Laufzeitvariablen %%a aus welche im Schleifenkörper verarbeitet werden.
Im Schleifenkörper fragt dann das Skript mit choice ab ob die Datei gelöscht werden soll. Ist das der Fall wird die Datei in der nächsten Zeile gelöscht.
HIlfe zu choice gibts wie immer mit choice /?
Die Umgebungsvariable ERRORLEVEL wird auf den Index des Schlüssels gesetzt, der aus dem Auswahlsatz ausgewählt wurde. Die erste Auswahl gibt einen Wert von 1, die zweite einen Wert von 2 usw.
for /f "delims=" %%a in ('findstr /ism /c:"%suchstring%" "C:\Ordner\*.bat" 2^>nul') do @(
echo Suchstring "%suchstring%" gefunden in Datei: "%%a"
choice /c jn /m "Wollen sie die Datei loeschen ?"
if !errorlevel! == 1 del "%%a"
)
Damit sollte das geklärt sein.
Weitere Batch-HIlfe findest du hier im Forum im Bereich zu allen nur erdenklichen Themen. Bevor also eine neue Frage gestellt wird hier unbedingt vorher ausführlich die Suche bemühen, dort findet sich alles nur erdenkliche zum Thema Batch.