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, 6810 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
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 22 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 1 TagCPU, RAM, Mainboards6 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

LAN, WAN, Wireless
100m+ Leitungslänge Ethernet
gelöst Frage von Ex0r2k16LAN, WAN, Wireless16 Kommentare

Guten Morgen zusammen, ich habe eine Netzwerkdose die die 100m Leitungslänge bis zum Switch knackt. Damit die Verbindung einigermaßen ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...