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

Frage Entwicklung Batch & Shell

GELÖST

Durch Scanner erstellte .txt aufsplitten mit Batchdatei

Mitglied: Sp3ll3

Sp3ll3 (Level 1) - Jetzt verbinden

12.08.2009, aktualisiert 12:27 Uhr, 3341 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...