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 Textzeile aus Datei Kopieren und sortieren

Mitglied: Pago159

Pago159 (Level 2) - Jetzt verbinden

17.05.2011, aktualisiert 18.10.2012, 4225 Aufrufe, 15 Kommentare

Hallo Kollegen,

ich bräuchte mal wieder eure Hilfe.

Folgende Ausgangssituation ist gegeben:

  • Testdokument.txt mit folgendem Inhalt:

Vorher:

01.
xyz 
02.
abcd 
03.
defg 
04.
****** wurde gelöscht 
05.
sgbnj 
06.
jklöp 
07.
****** wurde gelöscht
( sind Zahlenfolgen, welche immer sechsstellig sind.)

Nachher:
01.
****** wurde gelöscht 
02.
****** wurde gelöscht 
03.
****** wurde gelöscht
Benötigt:

  • Textdokument in dem nur die Gelöschten Dateien angegeben sind und nach Zahl aufsteigend sortiert.

Ich habe mir gedacht, dass das ganze per Batch machbar ist.

gedacht habe ich an:

findstr "
wurde gelöscht" %systemroot%\TestdokumentTEST.txt

Damit sollte doch eigentlich der String in das neue Textdokument Kopiert werden (Textdokument wird auf Batch gezogen)

Vielen Dank schonmal im vorraus
Grapper
Mitglied: bastla
17.05.2011 um 21:38 Uhr
Hallo Grapper!

Könntest Du das bitte mit einem "Vorher-Nachher"-Vergleich der Dateiinhalte (gerne auch mit "Code"-Formatierung) deutlicher darstellen? Derzeit kann ich Dir nicht (weit genug ) folgen ...

[Edit] Danke, jetzt geht's [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: bastla
17.05.2011 um 21:47 Uhr
... etwa so:
findstr /c:"wurde gel" %1|sort>%systemroot%\TestdokumentTEST.txt
- unter der Annahme, dass in "%systemroot%\TestdokumentTEST.txt" das Ergebnis stehen soll (und etwas abgekürzt, um ev Codierungsproblemen hinsichtlich des Umlautes vorzubeugen) ...

Grüße
bastla
Bitte warten ..
Mitglied: Pago159
17.05.2011 um 22:01 Uhr
Danke, das hört sich schonmal gut an,
werde das morgen direkt mal teste,
habe gerade die Datei nicht vor mir.

Hast du vll auch noch eine gute Seite,
mit der ich mich in die Batch Programmierung einarbeiten kann?
Werde dies wohl jetzt doch öfter benötigen, als gedacht.

Lg GRapper
Bitte warten ..
Mitglied: ovu-p86
18.05.2011, aktualisiert 18.10.2012
Hallo GRapper,


mir gehts ähnlich. Versuch mich auch gerade ins Batchen einzuarbeiten.
Bin noch nicht so lange hier dabei, aber ne Menge gelernt, gerade auch von den
Kommentaren unserer Batch-Spezies ( immer eine Anregung zur Repertoirerweiterung).

Ich weiß nicht, ob es eine alles erschlagende Abhandlung zum Batchen gibt.
ich hab das jetzt so gemacht:

- Hab mir mit Cuecards ( http://www.mhst.net/cuecards2/ ) ne kl. Datenbank in Baumstruktur mit den
wichtigsten Befehlen angelegt, wo ich einfach das Ergebnis von "Befehl /?" drin habe,
ggf. mit ergänzenden Kommentaren.

- außerdem hat mir sehr geholfen die Hilfe zum für mich effizientesten Batch-Befehl "For"
https://www.administrator.de/Tutorial_zur_FOR-Schleife.html
sowie die Abhandlung zu Variablen
https://www.administrator.de/wissen/wie-arbeite-ich-mit-batch-umgebungsv ...

Für mich das schlimmste Kapitel sind die Leerzeichen in Pfaden, Dateinamen u.s.w., weil dann in den
Batches alles so unberechenbar wird.

- deshalb hab ich mir jetzt das Grundprinzip angewöhnt von Vornherein den Batch so anzulegen, daß
Leerzeichen erlaubt sind. Dann gewöhnt man sich dran und hat eine Fehlerquelle weniger. Zum Testen
baue ich deshalb immer gleich Verzeichnisse/Dateinamen etc. mit Leerzeichen. Dann ists auch
allgemeingültig.

Erstaunlich finde ich immer wieder was man so alles mit Batch/Cmd so machen kann.
Das sind meine bisherigen Erfahrungen. Dank nochmal an unsere Batch-Spezies.


Gruß

Uwe
Bitte warten ..
Mitglied: Pago159
18.05.2011 um 14:16 Uhr
@ Uwe:

Danke für die Links, werde mir das nachher mal schnell anschauen.

@ bastla:

Deine Zeile funktioniert super,
allerdings musste ich gerade feststellen, dass ich oben etwas Quatsch geschrieben habe:

01.
 
02.
kljbdakj asjdnkj ****** wurde gelöscht. dafds fsd 
03.
lakfopjkad ****** wurde gelöscht. 
04.
****** wurde gelöscht. sjah spdhfpuah  
05.
 
kann leider auch in dem Dokument vorkommen.
Dann wird ja die ganze Zeile rausgezogen.

Ich benötige allerdings nur die stelle :

" wurde gelöscht"
gibt es da vll auch eine lösung für?

Danke nochmal im vorraus.

Lg Grapper
Bitte warten ..
Mitglied: bastla
18.05.2011 um 14:21 Uhr
Hallo Grapper!

Riskier mal einen Blick in die Hilfe (findstr /?) - da stößt Du dann sicherlich auf zB "/e" ...

... oder was meinst Du mit der "Stelle"?

Grüße
bastla
Bitte warten ..
Mitglied: Pago159
18.05.2011 um 14:30 Uhr
Also bräuche ich um den String rauszubekommen /L
nur wird diese funktion auch die Zahl mitnehmen, da diese ja immer anders ist?
Dafür sind dann bestimmt die ...... da oder?

<EDIT>
Wenn ich allerdings die Platzhalter eintrage, dann wird der Text nicht mehr gefunden, bzw. das neue Textdokument bleibt leer.
Code ohne Plkatzhalter:

01.
@echo 
02.
findstr /c:"wurde gelöscht." %1|sort>h:\TestdokumentTEST.txt 
03.
Pause
Code mit Platzhalter:

01.
@echo 
02.
findstr /c:"...... wurde gelöscht." %1|sort>h:\TestdokumentTEST.txt 
03.
Pause
Alternativ habe ich es auch schon mit * versucht:

01.
@echo 
02.
findstr /c:"****** wurde gelöscht." %1|sort>h:\TestdokumentTEST.txt 
03.
Pause

</EDIT>
Lg GRapper
Bitte warten ..
Mitglied: bastla
18.05.2011 um 14:47 Uhr
Hallo Grapper!

Ich weiß auch dieses Mal nicht, was Du genau meinst - in
kljbdakj asjdnkj ****** wurde gelöscht. dafds fsd 
lakfopjkad ****** wurde gelöscht. 
****** wurde gelöscht. sjah spdhfpuah 
gibt es schon keine Zeile, die zu
++++++ wurde gelöscht
passt.

Dann schreibst Du zwar immer wieder von "Zahlen", es kommen in Deinen Beispielen aber keine vor, und was Du letztendlich tatsächlich als Ergebnis haben möchtest, kann ich Deinen Ausführungen ebenfalls nicht exakt entnehmen - wie wäre es daher einmal mit einem "richtigen" "Vorher - Nachher"-Beispiel - meinetwegen mit veränderten / anonymisierten Daten, aber zumindest mit erkennbaren Strukturen ...

Und gleich noch vorweg: "findstr" findet Zeilen - eine weitere Zerlegung müsste dann auf andere Weise erfolgen.

Grüße
bastla
Bitte warten ..
Mitglied: Pago159
18.05.2011 um 14:54 Uhr
Ok, ich dachte dass "findstr" wirklich eine Textstelle finden kann.

also nochmal ganz genau:

Der Text schaut folgendermaßen aus:

01.
Das medium 156156 wurde gelöscht. 
02.
mehrere läufe wurden verarbeitet, das meium 123123 wurde gelöscht
daraus wird der übersichthalber nur benötigt:
01.
123123 wurde gelöscht 
02.
156156 wurde gelöscht
deswegen habe ich das ganze mit den Platzhaltern versucht, welche ja auch in der Hilfe /? angegeben werden.

Lg GRapper
Bitte warten ..
Mitglied: bastla
18.05.2011 um 16:00 Uhr
Hallo Grapper!

Dann versuch das mal so:
01.
@echo off & setlocal 
02.
set "Aus=TestdokumentTEST.txt" 
03.
set "Such1=wurde" 
04.
set "Such2=gelöscht" 
05.
 
06.
del "%Aus%" 2>nul 
07.
for /f "delims=" %%i in ('findstr /c:"%Such1% %Such2%" %1') do call :ProcessLine %%i 
08.
sort "%Aus%" /o "%Aus%" 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
set "Nr=" 
13.
set "Gef=" 
14.
:Loop 
15.
if "%1"=="" goto :eof 
16.
if %1==%Such1% ( 
17.
    set "Gef=true" 
18.
) else ( 
19.
    echo %1|findstr /c:%Such2%>nul && ( 
20.
        if defined Gef >>"%Aus%" echo %Nr% %Such1% %Such2% 
21.
        set Gef= 
22.
    ) || ( 
23.
        set "Nr=%1" 
24.
25.
26.
shift 
27.
goto :Loop
Damit sollten sogar mehrfach in einer Zeile vorhandene " wurde gelöscht" gefunden werden (wenn sie sauber durch Leerzeichen voneinander getrennt sind) ...

Grüße
bastla
Bitte warten ..
Mitglied: Pago159
18.05.2011 um 16:26 Uhr
Danke Bastla,
die Batch funktioniert super.

Sorry nochmal für meine Missverständliche ausdrucksweise.

Lg Grapper
Bitte warten ..
Mitglied: Pago159
20.05.2011 um 16:24 Uhr
Hey Batsla,

eine Frage Quält mich da dann doch noch!

Woher weis diese Batch Datei,
wo die Ausgabedatei hin soll?

Lg GRapper
Bitte warten ..
Mitglied: bastla
20.05.2011 um 16:50 Uhr
Hallo Grapper!

Ich hätte natürlich nicht ganz so schreibfaul sein und die Variable %Aus% (siehe Zeile 2) auch %Ausgabe% nennen können ...

Grüße
bastla
Bitte warten ..
Mitglied: Pago159
20.05.2011 um 16:57 Uhr
01.
set "Aus=TestdokumentTEST.txt" 
sagt der Batch aber doch nicht, wo diese Datei "TestdokumentTEST.txt" liegen soll, wenn sie nicht vorhanden ist,
diese Zeile gibt doch lediglich den Namen der Datei an oder sehe ich dies Falsch?

<Edit>
Kleiner Denkfehler von mir ;)
Mein Systemroot liegt gerade auf H:\
deshalb ist die Frage aufgekommen,
hat sich also von selbst geklärt

trotzdem Danke

</EDIT>
Lg Grapper
Bitte warten ..
Mitglied: bastla
20.05.2011 um 17:03 Uhr
Hallo Grapper!

Nur der Ordnung halber: Natürlich kann nicht nur ein Name, sondern auch ein Pfad angegeben werden:
set "Aus=D:\Ein beliebiger Ordner\TestdokumentTEST.txt"
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien suchen, kopieren und sortieren
Frage von BAD1HORBatch & Shell6 Kommentare

Hallo, folgendes Problem: Dateien, die auf einem Laufwerk monatsweise in Ordnern abgelegt sind, sollen per Batch auf ein anderes ...

Batch & Shell

Dateien in alphabetische Ordner sortieren

gelöst Frage von symei3Batch & Shell10 Kommentare

Hallo Forumsgemeinde, leider habe ich sehr wenig Ahnung von Batchdateien etc. Deswegen wird meine Frage vermutlich nur ein leises ...

VB for Applications

Textzeile in Datei einfügen wenn bestimmtes Wort nicht vorhanden

gelöst Frage von aletriVB for Applications9 Kommentare

Guten Abend allerseits Dieser Script fügt eine Textzeile in Datei ein aber auch dann wenn Zeile in diesem Fall ...

VB for Applications

VBS Textzeile in fsx.cfg Datei an bestimmte Stelle einfügen

gelöst Frage von aletriVB for Applications6 Kommentare

Guten Abende Leute Mit dem hier aufgeführten Script möchte ich den Text "AutogenDescriptionsFilename=AutogenDescriptions_EFRO.xml" einfügen was soweit auch mit der ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 15 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 18 StundenAdministrator.de Feedback14 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...