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 Durch Scanner erstellte .txt aufsplitten mit Batchdatei

Mitglied: Sp3ll3

Sp3ll3 (Level 1) - Jetzt verbinden

12.08.2009, aktualisiert 12:27 Uhr, 3351 Aufrufe, 14 Kommentare

Hallo,

ich habe einen Scanner eingerichtet, der eine Textdatei mit folgendem Inhalt auswirft:

116934;10052009;1720.TXT

116934;3033968;;20;;;;;;;;;
116934;2843021;;1;;;;;;;;;
105206;2658390;;100;;;;;;;;;
105206;4930004;;10;;;;;;;;;
106228;4981043;;5;;;;;;;;;
106228;2740105;;500;;;;;;;;;


Das erste ist die Kundennummer, das zweite die Artikelnummer und das letzte die Anzahl. Diese TXT-Datei soll jetzt aufgeteilt werden in drei Stück jeweil nachdem sich die Kundennummer ändert:


116934;10052009;1720.TXT

116934;3033968;;20;;;;;;;;;
116934;2843021;;1;;;;;;;;;

und dann halt die nächste.

Jetzt bräuchte ich eine Batch-Datei die mir das abnimmt, da es hoher aufwand ist alles einzeln einzuscannen und abzuspeichern.

Besten dank im vorraus für die Antworten

Gruß
Mitglied: bastla
12.08.2009 um 12:43 Uhr
Hallo Sp3ll3 und willkommen im Forum!

Dein gewünschtes Ergebnis sind 3 Dateien mit folgenden Inhalten?
Datei1:
116934;10052009;1720.TXT 
 
116934;3033968;;20;;;;;;;;; 
116934;2843021;;1;;;;;;;;;
Datei2:
105206;2658390;;100;;;;;;;;; 
105206;4930004;;10;;;;;;;;;
Datei3:
106228;4981043;;5;;;;;;;;; 
106228;2740105;;500;;;;;;;;;
Wenn ja: Wie sollen diese Dateien heißen?

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 13:08 Uhr
ja, das ist richtig.

der Name setzt sich wie folgt zusammen:

Kundennummer;Datum(ttmmjjjj);Uhrzeit(minminstdstd)

Danke für das willkommen heißen und die schnelle antwort.
Bitte warten ..
Mitglied: bastla
12.08.2009 um 13:18 Uhr
Hallo Sp3ll3!

Gemeint war eigentlich, unter welchem Namen die jeweiilige Teildatei gespeichert werden soll ...

Zusatzfrage: Wie ist bei Namenskollisionen vorzugehen (wenn also eine gleichnamige Datei bereits existieren sollte)?

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 13:25 Uhr
Also die Teildatei soll das gleiche Namenformat tragen mit angepasster Kundennummer sprich:

116934;10052009;1720.TXT

105206;10052009;1721.TXT

usw..

Da jeder Kunde nur maximal einmal vorkommen kann (da die erzeugten TXT-Dateien nach Verarbeitung gelöscht werden) ist eine Namenskollision ausgeschlossen. Muss also nicht Berücksichtigt werden.

Gruß
Bitte warten ..
Mitglied: miniversum
12.08.2009 um 13:51 Uhr
Versuchs mal damit:
01.
@echo off 
02.
set "pfad=C:\Ordner" 
03.
 
04.
FOR /F "tokens=1,* delims=;" %%i in ('dir /b "%pfad%\*.txt"') do ( 
05.
ren "%pfad%\%%i;%%j" "%%i;%%j.tmp" 
06.
FOR /F "tokens=1,* delims=;" %%l in ('type "%pfad%\%%i;%%j.tmp"') do echo %%l;%%m>>"%pfad%\%%l;%%j" 
07.
REM del "%pfad%\%%i;%%j.tmp" 
08.
)
Wenn du das REM entfernst wird die ursprungsdatei gelöscht, sonst nru umbeenannt mit einem tmp als Anhang.
Bitte warten ..
Mitglied: bastla
12.08.2009 um 13:53 Uhr
Hallo Sp3ll3!

Wenn die Ausgangsdatei "116934;10052009;1720.TXT" heißt und sich aufgrund der ersten Kundennummer ebenfalls der Dateiname "116934;10052009;1720.TXT" (beides tatsächlich mit enthaltenen ";" ?) ergibt, müssten die Teildateien in einen anderen Ordner geschrieben werden, oder soll die Ausgangsdatei um die nicht zugehörigen Zeilen gekürzt werden?

Falls Letzteres, dann etwa so:
01.
@echo off & setlocal 
02.
set "AusgangsDatei=%~1" 
03.
set "Zielordner=%~dp1" 
04.
set "Bak=.bak" 
05.
for /f "tokens=1* delims=;" %%i in ("%~nx1") do set "Timestamp=%%j" 
06.
 
07.
move "%AusgangsDatei%" "%AusgangsDatei%%Bak%" 
08.
set "Zuletzt=$" 
09.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%AusgangsDatei%%Bak%"') do set "Zeile=%%j" & call :ProcessLine 
10.
 
11.
del "%AusgangsDatei%%Bak%" 
12.
goto :eof 
13.
 
14.
:ProcessLine 
15.
for /f "delims=;" %%a in ("%Zeile%") do set "KNr=%%a" 
16.
if "%KNr%"=="%Zuletzt%" goto :WriteLine 
17.
set "Zuletzt=%KNr%" 
18.
set "Datei=%Zielordner%%KNr%;%Timestamp%" 
19.
 
20.
:WriteLine 
21.
>>"%Datei%" echo\%Zeile% 
22.
goto :eof
Aufzurufen ist der Batch mit Übergabe der Ausgangsdatei, also etwa:
Aufteilen.cmd "D:\Ein Ordner\116934;10052009;1720.TXT"
Bei Bedarf lässt sich das natürlich auf Bearbeitung aller (".TXT"- ) Dateien im Ordner erweitern ...

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 14:39 Uhr
Hi,

irgendwo vertue ich mich bei dem eintragen der Pfade:

Ursprungsordner: D:\TXT Splitter

Zielordner: D:\TXT Splitter\Ablage

Datei: D:\TXT Splitter\116934;10052009;1720.TXT

Mögt ihr mal eben schauen (schande über mein Haupt.. )
Bitte warten ..
Mitglied: bastla
12.08.2009 um 14:45 Uhr
Hallo Sp3ll3!

Zeile 3 (zu beachten ist der abschließende "\"):
set "Zielordner=D:\TXT Splitter\Ablage\" 
Außerdem wird angenommen, dass der Zielordner bereits existiert, ansonsten noch (jedenfalls vor Zeile 9) einfügen:
if not exist "%Zielordner%" md "%Zielordner%"
Aufruf des Batches:
Aufteilen.cmd "D:\TXT Splitter\116934;10052009;1720.TXT"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
12.08.2009 um 14:57 Uhr
... Nachtrag: Wenn die Einzeldateien in einem anderen Ordner erstellt werden, ist das Umbenennen (und Löschen) der Ausgangsdatei nicht erforderlich, daher:
01.
@echo off & setlocal 
02.
set "AusgangsDatei=%~1" 
03.
set "Zielordner=%~dp1Ablage\" 
04.
 
05.
if not exist "%Zielordner%" md "%Zielordner%" 
06.
 
07.
for /f "tokens=1* delims=;" %%i in ("%~nx1") do set "Timestamp=%%j" 
08.
set "Zuletzt=$" 
09.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%AusgangsDatei%"') do set "Zeile=%%j" & call :ProcessLine 
10.
 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
for /f "delims=;" %%a in ("%Zeile%") do set "KNr=%%a" 
15.
if "%KNr%"=="%Zuletzt%" goto :WriteLine 
16.
set "Zuletzt=%KNr%" 
17.
set "Datei=%Zielordner%%KNr%;%Timestamp%" 
18.
 
19.
:WriteLine 
20.
>>"%Datei%" echo\%Zeile% 
21.
goto :eof
In dieser Fassung wird der Zielordner automatisch als Unterordner "Ablage" des Ordners, in welchem die Ausgangsdatei liegt, erstellt und verwendet.

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 15:00 Uhr
wir nähern uns dem Ende, allerdings klappts noch immer nicht wie müsste es denn komplett bei mir aussehen mit den angegebenen Pfaden?
Bitte warten ..
Mitglied: bastla
12.08.2009 um 15:15 Uhr
Eigentlich wie gleich oberhalb ...

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 15:41 Uhr
Er sagt mir das die angegebene Umgebungsoption nicht gefunden wurde und spuckt mir dann folgenden Teil aus:

findstr /n "^" "%AusgangsDatei%"') do set "Zeile=%%j" & call :ProcessLine

goto :eof


:ProcessLine

for /f "delims=;" %%a in
Bitte warten ..
Mitglied: bastla
12.08.2009 um 15:55 Uhr
Hallo Sp3ll3!

Kann ich nicht nachvollziehen - könntest Du kurz beschreiben, wie Du getestet hast?

Bei mir funktioniert jedenfalls die (aus dem per "Quelltext" aufgerufenen Fenster kopierte) gepostete Version mit folgender Quelldatei "116934;10052009;1720.TXT":
01.
116934;10052009;1720.TXT 
02.
 
03.
116934;3033968;;20;;;;;;;;; 
04.
116934;2843021;;1;;;;;;;;; 
05.
105206;2658390;;100;;;;;;;;; 
06.
105206;4930004;;10;;;;;;;;; 
07.
106228;4981043;;5;;;;;;;;; 
08.
106228;2740105;;500;;;;;;;;;
Kannst Du das bitte mit der gleichen Vorgangsweise (den gleichen Daten) bei Dir prüfen?

Grüße
bastla
Bitte warten ..
Mitglied: Sp3ll3
12.08.2009 um 16:11 Uhr
Habe den Fehler schon gefunden, danke jetzt funktioniert es.. war ein Rechtschreibfehler..

Besten Dank
Bitte warten ..
Ähnliche Inhalte
Netzwerke

Firmennetzwerk aufsplitten auf zwei Standorte

gelöst Frage von 121630Netzwerke19 Kommentare

Wir sind gerade dabei die Firma auf zwei Standorte aufzusplitten. Ich wollte hierfür mittels 2 pfSense Firewalls arbeiten. So ...

Windows Server

Mkdir in Batchdatei erstellt teilweise eine Datei anstatt Ordner

gelöst Frage von johndoeWindows Server3 Kommentare

Hallo Zusammen, ich binde per GPO eine Batchdatei ein, die folgendes beinhaltet: mkdir \%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup copy \\serverpfad\verknuepfung.lnk "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" ...

Batch & Shell

Koordinaten mittels Batchdatei aus .txt Datei exportieren

Frage von PXProfBatch & Shell11 Kommentare

Hallo, in unserer Feuerwehr bekommen wir bei einer Alarmierung auch immer eine E-Mail die auf unserem Server Empfangen wird ...

Microsoft

Batchdatei: Dateien nach String durchsuchen, Dateinamen in .txt speichern

gelöst Frage von elcheffe123Microsoft22 Kommentare

Ahoi! Der Titel sagt eigentlich schon alles. Ich möchte eine Batchdatei schreiben, die im aktuellen Ordner( unbekannte anzahl an ...

Neue Wissensbeiträge
Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 9 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 9 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 9 StundenHardware10 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

MikroTik RouterOS

Mikrotik Advisory: Vulnerability exploiting the Winbox port

Information von colinardo vor 9 StundenMikroTik RouterOS

Brand aktuell: Eine Schwachstelle im Winbox-Port bei Mikrotik Routern erlaubt das Auslesen der User-Datenbank der Router. Patch ist aktuell ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL17 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...