Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Textdatei bei findstr-Treffer löschen

Frage Entwicklung Batch & Shell

Mitglied: bankaifan

bankaifan (Level 2) - Jetzt verbinden

29.03.2010, aktualisiert 11:21 Uhr, 6371 Aufrufe, 6 Kommentare

Hey ihr,

hab ein kleines Problem mit ner For-Schleife.

Ich habe hierzu schon diesen Thread hier gefunden, hat mir aber nicht ganz weitergeholfen. http://www.administrator.de/index.php?content=39606

Nun...ich hab n Programm geschrieben, dass mir die Windowshilfe in Textdateien druckt. Allerdings gibt es nicht für jeden Befehl ne Hilfe bzw. kann ich sie nicht für jeden speichern. Bsp. wäre rasdial...

Nun habe ich die Datei und dort steht drinne : "Zu diesem Befehl steht kein Hilfethema zur Verfgung.
Versuchen Sie es mit "rasdial /?". "

Ich möchte jetzt alle Dateien nach diesem Text durchsuchen lassen und diese Dateien dann löschen.

Natürlich muss dazu rasdial als Variable drinn sein.

Momentan sieht man Code folgendermaßen aus:

01.
 
02.
for /f "delims=" %%i in ('findstr /b /i /C:Versuchen Sie es mit %%i "%CD%\*.txt"') do (del "%CD%\%%i") 
03.
 
Der Suchtext ist gekürzt. Passt auch so. Aber bei der Verarbeitung passt i-was nicht. Er geht zwar alle "fehlerhaften" Dateien durch, gibt mir dann aber die Hilfe für "del" aus

01.
 
02.
@echo off & setlocal 
03.
 
04.
set "Size=1 
05.
 
06.
echo for /f "delims=" %%i in ('dir /b %CD%\"*.txt"') do if %%~zi LSS 1 for /f "delims=." %%n in ('echo %%~i') do help %%n > "%CD%\%%n.txt" 
07.
echo for /f "delims=" %%i in ('dir /b %CD%\"*.txt"') do if %%~zi GEQ 1 for /f "delims=." %%n in ('echo %%~i') do %%n /? > "%CD%\%%n.txt" 
08.
for /f "delims=" %%i in ('findstr /b /i /C:Versuchen Sie es mit %%i "%CD%\*.txt"') do (del "%CD%\%%i") 
09.
 
10.
sleep 20 
11.
 
So sieht mein gesamter Code aus. Die beiden echos sind natürlich nur zeitweise. Die sorgen dafür dass beide Möglichkeiten getestet werden...tut aber nix zur Sache.

Vllt kann mir auch noch jmd sagen was diese "setlocal" bewirkt?


Ich hoffe mir kann jmd helfen^^

Viele Grüße
Mitglied: bastla
29.03.2010 um 11:36 Uhr
Hallo bankaifan und willkommen im Forum!

Eher so:
for %%i in (*.txt) do findstr /b /i /c:"Versuchen Sie es mit %%~ni">nul && echo del "%%i"
Vllt kann mir auch noch jmd sagen was diese "setlocal" bewirkt?
Das "setlocal" sorgt dafür, dass Änderungen (auch das Neu-Erstellen fällt darunter) an Variablen (zB %Size%) nur bis zum nächsten "endlocal" gelten - da ein solches spätestens (und dann automatisch) am Ende des Batches ausgeführt wird, bleiben keine "Reste" (die sich dann in einem aus dem gleichen CMD-Fenster gestarteten weiteren Batch auswirken könnten) ...
Übrigens: Das von Dir verwendete %CD% ist redundant - im aktuellen Pfad bist Du ohenehin schon ...

Grüße
bastla
Bitte warten ..
Mitglied: bankaifan
29.03.2010 um 11:54 Uhr
Super, danke für die schnelle Antwort

01.
for %%i in (*.txt) do findstr /b /i /c:"Versuchen Sie es mit %%~ni">nul && echo del "%%i"
Das %%~ni bewirkt dass das .txt am ende weg fällt, richtig?

und was macht das "nul" das ist mir völlig neu
" ich programmier erst seit 2 Tagen mit Batch.

Warum braucht man hier ein doppeltes &?

Und woher "weiß" das findstr dass nach dem "versuchen..." das ende des strings erreicht ist? bei mir hat er immer alles was dahinter stand mit in den string einbezogen.

Entschuldige die vielen Fragen, aber "Wer nicht fragt bleibt dumm" xD

Und ich möchte so viel wie möglich lernen, von uns 10 Azubis werden nur 3 fest übernommen

Gruß

EDIT: Habs grad mal getestet...i-was passt wohl noch nicht. Wenn ich die .bat starte passiert garnix ... also die CMD öffnet sich zwar aber bleibt

01.
Y:\DOS\Hilfe>for %i in (*.txt) do findstr /b /i /C:"Versuchen Sie es mit %~ni" 
02.
1>nul  && echo del "%i" 
03.
 
04.
Y:\DOS\Hilfe>findstr /b /i /C:"Versuchen Sie es mit If"  1>nul  && echo del "If. 
05.
txt"
So steht es dort...und dann passiert einfach nix
Bitte warten ..
Mitglied: bastla
29.03.2010 um 13:34 Uhr
Hallo bankaifan!
..und dann passiert einfach nix^^
Was sollte denn passieren? Selbst, wenn es in der Datei eine Zeile mit dem gesuchten Text gäbe (sollte ja in der "if.txt" nicht der Fall sein), würde der Löschbefehl nur angezeigt (das "echo" vor dem "del" - hatte ich oben nicht erwähnt - erlaubt ein stressfreieres Testen, weil noch nicht wirklich gelöscht, sondern nur der Löschbefehl angezeigt wird; testen solltest Du übrigens einen Batch ohnehin direkt in der CMD-Shell, oder zumindest mit einem "pause" am Ende, um alle Ausgaben in Ruhe lesen zu können).
Zu Deinen Fragen: Zu entschuldigen gibt's da gar nix (und wenn ich grade keine Zeit oder Lust hätte, müsste ich ja auch nicht antworten) - ganz im Gegenteil ...

Das %%~ni bewirkt dass das .txt am ende weg fällt, richtig?
Yep.
was macht das "nul"
"nul" steht für "das Nichts", und dahin wird in diesem Fall die Ausgabe des "findstr" geschickt, da ja nur interessiert, ob der gesuchte Text in der Datei steht (Du kannst ">nul" aber mal weglassen und schauen, was dann passiert).
Warum braucht man hier ein doppeltes &?
Dadurch wird der folgende Befehl nur ausgeführt, wenn der vorhergehende einen Errorlevel 0 geliefert hat - bei "findstr" ist das dann der Fall, wenn mindestens eine passende Zeile gefunden wurde. Das Gegenstück zu "&&" ist übrigens "||" - damit wird der folgende Befehl nur bei einem Errorlevel <> 0 des vorigen Befehls ausgeführt.
Und woher "weiß" das findstr dass nach dem "versuchen..." das ende des strings erreicht ist? bei mir hat er immer alles was dahinter stand mit in den string einbezogen.
Die Frage ist mir nicht ganz klar - Tatsache ist allerdings, dass "findstr" zeilenorientiert ist und daher als Ergebnis immer die ganz Zeile, in welcher der Suchbegriff gefunden wurde, liefert ...

Grüße
bastla
Bitte warten ..
Mitglied: bankaifan
29.03.2010 um 13:49 Uhr
Hm...sehr interessant^^

Das mit dem && ist ja dann wirklich praktisch, da spart man sich eventuelle umwege.

Nul ist jetzt auch klar.

>>Und woher "weiß" das findstr dass nach dem "versuchen..." das ende des strings erreicht ist? bei mir hat er immer alles was dahinter stand mit in den string einbezogen.

>Die Frage ist mir nicht ganz klar - Tatsache ist allerdings, dass "findstr" zeilenorientiert ist und daher als Ergebnis immer die ganz Zeile, in welcher der Suchbegriff gefunden wurde, liefert ...

Naja...findstr soll ja eine bestimmte zeichenkette suchen...woher weiß er jetzt dass er nur innerhalb von " " suchen soll...wenn ich bei mir eingeben hab findstr .../C:"Hallo Welt" %CD%\Hilfe.txt dann hat er nach "Hallo Welt %CD%\Hilfe.txt" gesucht.



Bei dem Programm steht jetzt dort: ...

Y:\DOS\Hilfe>findstr /s /b /i /C:"Versuchen Sie es mit If" 1>nul && del "If.txt"

aber er hält quasi immer nach dem ersten "prüfen" an und durchsucht nicht alle dateien. Fehlt da einfach noch iwas?

Gruß
Bitte warten ..
Mitglied: bastla
29.03.2010 um 15:57 Uhr
Hallo bankaifan!
Fehlt da einfach noch iwas?
Außer der Kleinigkeit, dass ich auch noch angeben sollte, in welcher Datei zu suchen ist, eigentlich nicht - sorry, war vorhin schon mehr weg als da ...

Aber jetzt:
for %%i in (*.txt) do findstr /b /i /c:"Versuchen Sie es mit %%~ni" "%%i">nul && echo del "%%i"
Grüße
bastla
Bitte warten ..
Mitglied: bankaifan
29.03.2010 um 16:14 Uhr
danke dir... bin eben noch nicht so das Batch-Genie

Und es hat natürlich geklappt^^...musste noch ne kleinigkeit ändern, weil er den String nicht erkannt hat, da ja noch ein " in dem satz steht...also hab ich die varibale noch weggekürzt aber jetzt passt es

Danke dir
Bitte warten ..
Ähnliche Inhalte
PHP
Mit php in einer Textdatei nach Treffern suchen und falls es mehrere sind auch alle auflisten
gelöst Frage von ANTiNATORPHP2 Kommentare

Ich habe folgendes Problem : Ich habe eine Suchleiste, mit der ich ein Verzeichnis suchen kann und in einer ...

Ubuntu
Vor - und Nachnahmen aus einer Textdatei löschen, die in anderen Textdateien vorhanden sind
gelöst Frage von takitanoUbuntu4 Kommentare

Hallo, ich habe folgendes Problem: ich habe eine Textdatei mit mehr als 30.000.000.000 Zeilen. In eingigen von diesen Zeilen ...

Batch & Shell
Powershell kleiner als x textdateien löschen
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

ls der befehl soll alle dateien löschen die kleiner sind als 5kb. ich habe viele ordner mit textdateien darin ...

Batch & Shell
Textdatei aus mehreren .sfx Dateien löschen
gelöst Frage von BustedDiceBatch & Shell3 Kommentare

Hallo zusammen brauch mal wieder Hilfe bei einem Batch.Ich möchte eine .txt mit dem Name hilfe.txt aus ca. 200 ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...