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 Bedingt Zeilen aus .txt kopieren per Batch

Mitglied: knechtibus

knechtibus (Level 1) - Jetzt verbinden

29.07.2009, aktualisiert 10:07 Uhr, 6830 Aufrufe, 8 Kommentare

Hallo miteinander,

würde gerne mittels Batch bedingt Zeilen aus einer link.txt Datei kopieren. Folgendermaßen sieht der Inhalt der .txt Datei aus:

Scenario_Online[0,0].Name=R001 <<S_BBB_LDN1-1
Scenario_Online[0,1].Name=R001 >>S_BBB_LDN1-1
Scenario_Online[0,12].Name=R007 <<S_BBG_LLG1-1
Scenario_Online[0,13].Name=R007 >>S_BBG_LLG1-1
Scenario_Online[0,14].Name=R008 <<V_LTT_LLG1-2
Scenario_Online[0,15].Name=R008 >>V_LTT_LLG1-2
Scenario_Online[0,14].Name=R010 <<UMUM 4004
Scenario_Online[0,15].Name=R010 >>UMUM 4004

Das bedingt kopieren in eine Datei dat.txt soll nun folgendermaßen aussehen. Es soll überprüft werden ob die Zeile mit einem "-1" oder "-2" abschließt. Wenn dies der Fall ist soll überprüft werden ob der jeweils andere Fall auch in der link.txt vorhanden ist. Wenn diese beiden Fälle, also "-1" und "-2" in der link.txt vorhanden sind(mittlerer Block des Beispielinhaltes), sollen diese Zeilen in die Datei dat.txt kopiert werden.
Sollte nur einer der beiden Fälle("-1" bzw. "-2") in der Datei vorhanden sein, soll nichts kopiert werden(erster Block des Beispielinhaltes). Ebenso soll verfahren werden wenn keine "-1" oder "-2" am Ende der Textzeile steht (letzter Block des Beispielinhaltes).

Das herausfiltern dieser obigen Zeilen aus einer größeren Textdatei mittels findstr ist mir bereits gelungen aber an dem benötigten bedingten kopieren hapert es bei mir leider noch.

Freu mich auf eure Antworten.

MfG knechtibus
Mitglied: bastla
29.07.2009 um 11:34 Uhr
Hallo knechtibus!

Was wäre denn in Deinem Beispiel oben der "jeweils andere Fall" bzw der "mittlere Block", und wie sollte das Ergebnis aussehen?

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
29.07.2009 um 11:50 Uhr
Hallo bastla,

ja das ist vielleicht noch nicht ganz konkret wie ich mir das vorstelle. Es soll also geprüft werden ob die Zeile mit "-1" oder "-2" abschließt. Wenn dies der Fall ist soll geprüft werden ob es die selbe Zeile nocheinmal mit der jeweils anderen Zahl am Ende gibt. Wie z.B. hier:

Scenario_Online[0,12].Name=R007 <<S_BBG_LLG1-1
Scenario_Online[0,13].Name=R007 >>S_BBG_LLG1-1
Scenario_Online[0,14].Name=R008 <<S_BBG_LLG1-2
Scenario_Online[0,15].Name=R008 >>S_BBG_LLG1-2

Nur wenn diese Kombination auftritt, sollen die 4 Zeilen in die dat.txt kopiert werden. In allen anderen Fällen(keine -1 oder -2 am Ende oder die selbe Zeile nur mit -1 oder nur mit -2) soll nichts weiter geschehen. Hoffe mein Problem ist etwas klarer geworden.

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
29.07.2009 um 11:56 Uhr
Hallo knechtibus!

Das hieße, dass nur der Teil ab/nach ">>" bzw "<<" zu berücksichtigen wäre?

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
29.07.2009 um 11:59 Uhr
Hallo bastla,

ja das könnte man so sagen. Das wäre eigentlich der relevante Teil der zu berücksichtigen wäre. Die >> bzw << wären jedoch auch wichtig.

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
29.07.2009 um 12:05 Uhr
Hallo knechtibus!

Dann könnte es (vorausgesetzt, es gibt nur ein einziges Leerzeichen vor dem entsprechenden Teil) etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ein=D:\link.txt" 
03.
set "Aus=D:\dat.txt" 
04.
 
05.
if exist "%Aus%" del "%Aus%" 
06.
for /f "delims=" %%i in ('findstr /e "\-1 \-2" "%Ein%"') do set "Zeile=%%i" & call :ProcessLine 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
for /f "tokens=1*" %%i in ("%Zeile%") do set "Vergl=%%j" 
11.
if "%Vergl:~-1,1%"=="1" (set "Vergl=%Vergl:~,-1%2") else (set "Vergl=%Vergl:~,-1%1") 
12.
findstr /e /c:"%Vergl%" "%Ein%">nul || goto :eof 
13.
set "Zeile=%Zeile:<=^<%" 
14.
set "Zeile=%Zeile:>=^>%" 
15.
>>"%Aus%" echo %Zeile% 
16.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
29.07.2009 um 12:24 Uhr
Hallo bastla,

habe es gerade einmal mit einer verkürzten Version der link.txt versucht, in der nicht so viele Daten drinstehen. Leider geschieht beim ausführen der bat Datei nichts. Die Ausgabe Datei wird gelöscht, dann jedoch keine neue angelegt.
Mir ist übrigens eingefallen, dass beim Fehlen der "-1" bzw. "-2" am Ende der Zeile, diese Zeile auch in die dat.txt kopiert werden soll.
Vielleicht hast du ja noch ne Idee woran es liegen könnte. Sieht ja fast so aus als würde er erst gar nicht nach ProcessLine springen.

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
29.07.2009 um 12:40 Uhr
Hallo Knechtibus!

Da ich ja nur Deine Testdaten in dieser Version:
Scenario_Online[0,0].Name=R001 <<S_BBB_LDN1-1 
Scenario_Online[0,1].Name=R001 >>S_BBB_LDN1-1 
Scenario_Online[0,12].Name=R007 <<S_BBG_LLG1-1 
Scenario_Online[0,13].Name=R007 >>S_BBG_LLG1-1 
Scenario_Online[0,14].Name=R008 <<S_BBG_LLG1-2 
Scenario_Online[0,15].Name=R008 >>S_BBG_LLG1-2 
Scenario_Online[0,14].Name=R010 <<UMUM 4004 
Scenario_Online[0,15].Name=R010 >>UMUM 4004
zur Verfügung habe, konnte ich auch nur damit testen - Ergebnis:
Scenario_Online[0,12].Name=R007 <<S_BBG_LLG1-1 
Scenario_Online[0,13].Name=R007 >>S_BBG_LLG1-1 
Scenario_Online[0,14].Name=R008 <<S_BBG_LLG1-2 
Scenario_Online[0,15].Name=R008 >>S_BBG_LLG1-2
Bitte zu beachten, dass am Ende der Zeile kein Leerzeichen enthalten sein darf!

Für das Testen ist es sinnvoll, das "echo off" auf "echo on" zu ändern und den Batch direkt von der Kommandozeile zu starten - so werden alle Befehle vor der Ausführung angezeigt.
Die neue Anforderung, dass "beim Fehlen der "-1" bzw. "-2" am Ende der Zeile, diese Zeile auch in die dat.txt kopiert werden soll", ließe sich etwa so umsetzen:
01.
@echo off & setlocal 
02.
set "Ein=D:\link.txt" 
03.
set "Aus=D:\dat.txt" 
04.
 
05.
if exist "%Aus%" del "%Aus%" 
06.
for /f "usebackq delims=" %%i in ("%Ein%") do set "Zeile=%%i" & call :ProcessLine 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
for /f "tokens=1*" %%i in ("%Zeile%") do set "Vergl=%%j" 
11.
if "%Vergl:~-1,1%"=="1" ( 
12.
    set "Vergl=%Vergl:~,-1%2" 
13.
) else ( 
14.
    if "%Vergl:~-1,1%"=="2" ( 
15.
        set "Vergl=%Vergl:~,-1%1" 
16.
    ) else ( 
17.
        goto :Write 
18.
19.
20.
findstr /e /c:"%Vergl%" "%Ein%">nul || goto :eof 
21.
 
22.
:Write 
23.
set "Zeile=%Zeile:<=^<%" 
24.
set "Zeile=%Zeile:>=^>%" 
25.
>>"%Aus%" echo %Zeile% 
26.
goto :eof
und bringt mit obigen Testdaten dieses Ergebnis:
Scenario_Online[0,12].Name=R007 <<S_BBG_LLG1-1 
Scenario_Online[0,13].Name=R007 >>S_BBG_LLG1-1 
Scenario_Online[0,14].Name=R008 <<S_BBG_LLG1-2 
Scenario_Online[0,15].Name=R008 >>S_BBG_LLG1-2 
Scenario_Online[0,14].Name=R010 <<UMUM 4004 
Scenario_Online[0,15].Name=R010 >>UMUM 4004
Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
29.07.2009 um 13:31 Uhr
Hallo bastla,

vielen Dank für deine Hilfe. Es funktioniert nun einwandfrei, auch mit der Erweiterung! Habe die Leerzeichen am Ende jeder Zeile entfernt und sowohl die Batch Datei als auch die link.txt in ein anderes Verzeichnis verschoben und nun geht es. Scheinbar hat er sich an dem Verzeichnis gestört. Nochmals vielen Dank.

MfG
ein nun glücklicher knechtibus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mit Batch Zeilen aus TXT modifizieren
gelöst Frage von chef1568Batch & Shell4 Kommentare

Hallo zusammen, leider konnte ich mit den bisherigen Threads mein Problem bisher nicht lösen. Problemstellung: In einer Textdatei sind ...

Batch & Shell

Letzte Zeile einer .txt in eine andere .txt ausschneiden per Batch

gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo zusammen, zu meinem obrigen Thema habe ich leider nur in Richtung löschen und nicht in Richtung ausschneiden etwas ...

Batch & Shell

Batch: bestimmten string aus einer Zeile in txt löschen

Frage von Vit1985Batch & Shell4 Kommentare

Hallo, ich habe eine Textdatei und dort möchte ich einen bestimmten string löschen! Beispielzeile: Command: Hallo, wie Ich möchte ...

Batch & Shell

Batch - Bestimmter Inhalt einer Zeile aus einer txt oder ini als Variable

gelöst Frage von element22Batch & Shell2 Kommentare

Hallo zusammen, leider finde ich den Fehler nicht. Na gut, vielleicht sitzt er vorm Monitor, aber das ist etwas ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 6 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 TagSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung26 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...

Windows 10
Unter Windows 10 Home 64Bit (1709) kommt Fehler beim Aufruf von verschiedenen Systemprogrammen wie z.B. Gerätemanager
Frage von bitshopWindows 1017 Kommentare

Hallo, beim meinem Onkel haben wir seit längerem das Problem, dass z.B. beim Aufruf des Gerätemanagers eine Fehlermeldung kommt ...