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

Per Batch, 1.Lösung, alle Zeilenumbrüche aus einer TXT-Datei entfernen oder alternativ geziehlte Textblöcke aus einer TXT-Datei in eine zweite kopieren

Frage Entwicklung Batch & Shell

Mitglied: willimoeglich

willimoeglich (Level 1) - Jetzt verbinden

22.01.2010, aktualisiert 17:30 Uhr, 7885 Aufrufe, 6 Kommentare

Hallo, habe schon viele tolle Anregungen in diesem Forum gefunden, und hoffe ein Batch-Spezi findet sich und kann mein Problem lösen.

Ausgangsproblem ist, aus einer Text-Datei definierte Abschnitte in separate Text-Dateien zu kopieren. Die Ausgangsdatei hat folgendes Aussehen:

\\Berlin\Hauptstr8\Hotel_zum_Löwen
Hans.Meier keine Telefon
Werner.Meier kein Telefon
\\Berlin\Bahnhofstr11\Hotel An der Bahn
Ute.Wagner handy
\\Bonn\Uferstr888\Hotel zum Sonderzeichen$
Bernd.Richter isdn-telefon

In einer Steuerdatei habe ich alle Hotelnamen, welche per FOR-schleife ausgelesen werden. Für die jeweiligen Anschriften sollen nun in separaten TXT-Dateien, die Bewohnernamen
mit den Telefonangaben aus der Ausgangsdatei kopiert werden.
Mein erster Gedanke war, das mit FINDSTR und RegEx suche zu machen, aber das geht leider nur Zeilenweise und dazu müsste die ganze Ausgangsdatei in einer Zeile vorliegen.
Denn die \\ und der Hotelname sind immer vorhanden. Zwischen zwei mal vorkommenden \\ als zeilenanfang, hätte ich den Block den ich dann noch von den unwichtigen
Inhalten, wie Ort\Straße und Hotelname befreien könnte.
Falls es die Lösung vereinfacht, so kann ich auch vor jeder Anschriftenzeile eine Leerzeile einfügen.

Also erste Frage, wie bekomme ich alle Zeilenumbrüche aus der Ausgangsdatei haraus?

Wenn jemand eine andere Lösung, zum gezielten rauskopieren der Namenszeilen hat währe das auch nicht schlecht und als Alternative willkommen.

In den Zieldateien sollte dann folgendes stehen:
1.Datei soll heißen: Hotel_zum_Löwen.txt und beinhalten:
Hans.Meier keine Telefon
Werner.Meier kein Telefon
2.Datei soll heißen: Hotel an der Bahn.txt und beinhalten:
Ute.Wagner handy

usw.
Mitglied: LotPings
22.01.2010 um 18:39 Uhr
Hallo Willi,

deine Aufgabenstellung ist zwar nicht ganz eindeutig aber versuch es mal hiermit:

01.
@Echo off&Setlocal 
02.
set Ausgangsdatei=.\Hotels.txt 
03.
if defined Hotel set "Hotel=" 
04.
For /f "delims=" %%A in (%Ausgangsdatei%) do Call :check "%%~A" 
05.
Pause 
06.
Goto :eof 
07.
:Check 
08.
Set Line=%~1 
09.
if "%Line:~0,2%" EQU "\\" set "Hotel=%Line:~2%"&goto :NewHotel 
10.
if defined Hotel Echo/%~11>>"%Hotel%.txt" 
11.
goto :Eof 
12.
:NewHotel 
13.
If "%Hotel%" NEQ "%Hotel:*\=%" Set "Hotel=%Hotel:*\=%"&Goto :NewHotel 
14.
Echo Neues Hotel=%Hotel% 
15.
:: hier noch mögliche Sonderzeichen aus Dateinamen entfernen/maskieren 
16.
:: z.Bsp. Doppelpunkt gegen Unterstrich 
17.
Set "Hotel=%Hotel::=_%" 
18.
Goto :eof
Nur Teilweise getestet.

Gruß
LotPings
Bitte warten ..
Mitglied: willimoeglich
23.01.2010 um 11:38 Uhr
Hallo LotPings,
zunächst vielen Dank, für die schnelle Antwort/Lösung, sieht erst mal vielversprechend aus, muss nun sehen ob es sich an meine Situation anpassen lässt.
Hatte übersehen, dass nicht alle Hotelnamen mit dem String "Hotel" beginnen. Hotels beginnen schließlich nicht alle mit "Hotel...". Aber das macht nichts.
Falls ich es nicht hinkriege melde ich mich noch mal. Trotzdem ist die Lösung sehr elegant, wie ich finde. Die Befehlserweiterung und If define war mir nicht eingefallen.
Ich berichte dann später wie das Ergebnis aussieht.
Gruß Willi
Bitte warten ..
Mitglied: LotPings
23.01.2010 um 14:36 Uhr
Hallo Willi,
der String "Hotel" wird auch gar nicht gesucht.
Bei Zeilen welche mit "\\" beginnen wird der Abschnitt hinter dem letzten "\"Als Hotelname verwendet und in der Variablen "Hotel" gespeichert und solange als Dateiname verwendet bis er durch einen neuen Inhalt ersetzt wird.

Gruß
LotPings
Bitte warten ..
Mitglied: TsukiSan
23.01.2010 um 15:34 Uhr
also ganz eindeutig ist mir deine Frage nicht aber, wenn wir mal gaaanz langsam herangehen moechtest
du deine Ausgangsdatei "splitten". Weil Zeilenumbrueche sind ehr "vbCrLf".
Aber das alles in VBS zum Beispiel!
Also, wenn du nur "unterteilen" moechtest, dann google mal nach der SPLIT-Funktion in VBS oder so.
Ich meine, dass dich das ehr deinem Ziel naeher bringt.
Beispiel ind VBS fuer SPLIT and JOIN
01.
Dim b() 
02.
Dim Delim 
03.
 
04.
T = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z" 
05.
WScript.Echo "OriginalText: " & T 
06.
 
07.
Delim = "," 'ganzen String nach Kommas durchsuchen und bei jedem Komma splitten 
08.
a = Split(T, Delim) 
09.
 
10.
ReDim b(UBound(a))    'Alle "Einzelstücke" in ein Array (ohne Kommas!) einlesen  
11.
For i = 0 To UBound(a)  
12.
    b(i) = a(i)         
13.
Next 
14.
 
15.
Delim = "." 'Punkt zwischen die einzelnen Arrays einfügen und Ausgabe in GROSSBUCHSTABEN 
16.
    c = UCase(Join(b, Delim)) 
17.
WScript.Echo "Mit Punkt und gross: " & c 
18.
 
19.
Delim = ";" 'Semikolon zwischen die einzelnen Arrays einfügen und Ausgabe in kleinbuchstaben 
20.
    c = LCase(Join(b, Delim)) 
21.
Wscript.Echo "Mit Semikolon und klein: " & c 
22.
 
23.
msgbox ""
Gruss
Tsuki
Bitte warten ..
Mitglied: willimoeglich
23.01.2010 um 18:13 Uhr
Hallo LotPings,
ja, die Antwort war etwas voreilig von mir. Habe nur ganz flüchtig drüber gesehen, sollte man ebend nicht machen.

Funktioniert übrigens prima, habe das ganze als CALL in mein vorbereitendes Script eingebaut. Brauchte bloß noch in Zeile 10 die "11" zur "1" machen
(war wohl ein Tipfehler) und schon war alles perfekt.
Ich habe es nun doch NICHT in eine For-schleife gepackt, sondern lösche die nicht benötigten "Hotel"-Dateien am ende einfach.
Also noch mal vielen Dank !

gruß Willi
Bitte warten ..
Mitglied: willimoeglich
23.01.2010 um 18:17 Uhr
Hallo Tsuki,
vielen dank für die Antwort, die Lösung ist auch nicht schlecht, nur lag mein Schwerpunkt darauf das ganze mit den Batch-Bordmittel zu lösen und nicht mit VBS.

Und das hat LotPings bestens umgesetzt.

Trotzdem vielen Dank !!!
Schon toll so ein Erfahrungsaustausch, mit soviel hilfbereiten Programmierern.

Gruß Willi
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Ungewöhnliche Txt.Datei-Abfrage mit Batch (3)

Frage von DaTobsn zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...