Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Suchen und Ersetzen

Frage Entwicklung Batch & Shell

Mitglied: 62641

62641 (Level 1)

08.05.2008, aktualisiert 15:24 Uhr, 4545 Aufrufe, 4 Kommentare

Hallo,

ich bräuchte mal schnell Eure Hilfe.

Und zwar geht es um ein Batch-Skript, das nach bestimmten Ordnern und ausführbaren Dateien sucht.

Da es manche Dateien öfter gibt und ich die aber nur einmal gelistet haben möchte, dachte ich, ich kann die durch Suchen/Ersetzen filtern.

Also wenn die Datei z. B. so aussieht:

1234
1234
1234
123456
1234
1234
4321
4321
1234
123456
4321

.. dann sollte sie danach so aussehen (Reihenfolge egal):

1234
123456
4321

Also alle doppelten Zeilen herausfiltern.


(Kleine Überlegung: Wenn er jetzt in der Variable z. B. "halloblubb" gespeichert hat, kann er dann alle Zeilen die "halloblubb" lauten löschen und sich dann ganz normal wieder ans Ende der Datei schreiben?
Also in etwa:

Batch Start ------
...
...
...
in txt.txt jede zeile mit %variable% löschen
%variable% >> txt.txt
Batch Ende
)

Ich hoffe, ich hab mich nich zu blöd ausgedrückt. :>

Dankeschön =)

(Hab leider keine Lösung in der Sufu gefunden. )
Mitglied: bastla
08.05.2008 um 14:50 Uhr
Hallo Anno##!

Versuch es etwa so:
01.
@echo off & setlocal 
02.
set "Datei=D:\txt.txt" 
03.
set "Bak=bak" 
04.
 
05.
if not exist "%Datei%" echo %Datei% nicht gefunden! & goto :eof 
06.
move "%Datei%" "%Datei%.%Bak%" 
07.
@for /f "usebackq delims=" %%i in ("%Datei%.%Bak%") do findstr /x /c:"%%i" "%Datei%">nul 2>nul||echo %%i>>"%Datei%" 
08.
del "%Datei%.%Bak%"
Wenn Du die letzte Zeile weglässt, bleibt die Originaldatei als Sicherungskopie "D:\txt.txt.bak" erhalten.

Zum Ablauf: Nach dem Umbenennen (per "move" - dadurch wird auch gleich automatisch eine ev noch vorhandene alte Sicherungskopie gelöscht) der Originaldatei wird diese zeilenweise eingelesen und jede gelesene Zeile mit der neuen Datei verglichen (Diese ist am Anfang natürlich noch gar nicht vorhanden und daher würde der Batch ohne die Umleitung mit "2>nul" die Fehlermeldung "FINDSTR: D:\txt.txt kann nicht geöffnet werden." ausgeben). Wird die Zeile noch nicht in der neuen Datei gefunden, wird sie an diese angefügt.

Grüße
bastla

[Edit] "findstr"-Schalter "/c" ergänzt [/Edit]
Bitte warten ..
Mitglied: 62641
08.05.2008 um 15:02 Uhr
Super, danke dir!

Nur ein winzig kleines Problemchen .. :x

1234
1234
123456
geht problemlos ...

Leider enthält eine Zeile mehrere Leerzeichen und Tabs ..
Ich glaub deswegen gehts dann noch nicht perfekt.

Sorry, hätt ich dazuschreiben sollen.
Bitte warten ..
Mitglied: bastla
08.05.2008 um 15:16 Uhr
Hallo Anno##!

Vielleicht wird's besser, wenn wir dem "findstr" noch ein "/c" spendieren - ich korrigiere das gleich oben.

Grüße
bastla
Bitte warten ..
Mitglied: 62641
08.05.2008 um 15:24 Uhr
Danke, funktioniert einwandfrei!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Suchen, Ersetzen und Entfernen von Dateiinhalten auf Textbasis (1)

Frage von DanteManor zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell String Suchen mit Wildcard und Ersetzen (6)

Frage von herrmanndominic zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...