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

Output einer Stapelverarbeitungsdatei fehlerhaft

Frage Entwicklung Batch & Shell

Mitglied: ruebensau

ruebensau (Level 1) - Jetzt verbinden

31.07.2008, aktualisiert 18.10.2012, 2623 Aufrufe, 4 Kommentare

Hi Community,

habe folgendes Phänomen und kann es mir nicht erklären bzw. komme alleine nicht mehr weiter. Bitte um Hile!!!^^

Ich habe folgende Datei: (uldokumente.csv)
A10020-1-975639001-20040525-ARA-51147;25.05.2004;ARA;1;04NK13730;51147;975639001
A10020-1-975639001-20041215-ARA-51147;15.12.2004;ARA;1;04NK29630;51147;975639001
A10020-1-995584001-CAPM;;CAPM;1;;;995584001
A10020-1-QF;;QF;1;;;
......
Hier ist die Batch dazu: (uldaten.bat)
for /F "tokens=1,2,3,4,5,6,7 delims=;" %%a in (uldokumente.csv) do call :step1 %%a %%b %%c %%d %%e %%f %%g

:step1
for /R %%f in (%1.*) do echo %4;%3;%7;%2;%5;%6;%%~dpnxf >> test.txt
Hier der Output: (test.txt)
1;ARA;975639001;25.05.2004;04NK13730;51147;C:\test\uldaten\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
1;ARA;975639001;15.12.2004;04NK29630;51147;C:\test\uldaten\2004-12-15\A10020-1-975639001-20041215-ARA-51147.rtf
995584001;1;;CAPM;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
;1;;QF;;;C:\test\uldaten\A10020-1-QF.rtf
Frage:
Warum sind die letzten beiden Zeilen des Outputs so verdreht. Eigentlich müsste doch dieser Output entstehen:
1;CAPM;995584001;;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
1;QF;;;;;C:\test\uldaten\A10020-1-QF.rtf

Kann mir hier jemand weiterhelfen, wie ich den von mir gewollten Output erzeugen kann?

MfG
Rübe



[Edit Biber] Von "Windows" nach "Batchkrams" verschoben [/Edit]
Mitglied: bastla
31.07.2008, aktualisiert 18.10.2012
Hallo rübensau!

Auf Basis der in diesem Beitrag neulich dargestellten Lösungsvorschläge könnte das so gehen:
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in (uldokumente.csv) do set "EinZeile=%%i" & call :ProcessLine 
03.
goto :eof 
04.
 
05.
:ProcessLine 
06.
for /F "tokens=1-7 delims=;" %%a in ("%EinZeile:;;=;$;%") do call :Step1 %%a %%b %%c %%d %%e %%f %%g 
07.
goto :eof 
08.
 
09.
:Step1 
10.
set "AusZeile=%4;%3;%7;%2;%5;%6" 
11.
for /R %%f in (%1.*) do echo %AusZeile:$=%;%%~ff >> test.txt 
12.
goto :eof
Voraussetzung ist, dass Deine Daten kein "$" enthalten - falls doch, einfach in den Zeilen 7 und 11 durch ein geeignetes Zeichen ersetzen.

Wenn es keine "!" in Deinen Daten gibt, lässt sich durch Verwendung von "delayedExpansion" noch eine kürzere Schreibweise (wie im oben angesprochenen Beitrag) erzielen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%i in (uldokumente.csv) do ( 
03.
	set "EinZeile=%%i" 
04.
	for /F "tokens=1-7 delims=;" %%a in ("!EinZeile:;;=;$;!") do call :Step1 %%a %%b %%c %%d %%e %%f %%g 
05.
06.
goto :eof 
07.
 
08.
:Step1 
09.
set "AusZeile=%4;%3;%7;%2;%5;%6" 
10.
for /R %%f in (%1.*) do echo %AusZeile:$=%;%%~ff >> test.txt 
11.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: ruebensau
31.07.2008 um 13:18 Uhr
super, klappt!
Danke

Hab nämlich den gesamten Vormittag damit verbracht und wollte einfach nicht klappen.
Vielleicht hast du bei meiner letzten Kniffelstelle zu diesem Thema auch einen Ansatz.


Datei
A10020-1-975639001-20040525-ARA-51147;25.05.2004;ARA;1;04NK13730;51147;975639001
A10020-1-975639001-20041215-ARA-51147;15.12.2004;ARA;1;04NK29630;51147;975639001
A10020-1-995584001-CAPM;;CAPM;1;;;995584001
A10020-1-QF;;QF;1;;;
......
Also das ganze ist ja wie man sieht semikolon getrennt.
Als zusätzliches Outputfeld pro Zeile hätte ich noch gerne den alphanumerischen Wert vor dem ersten - Zeichen, damit der Output folgendermaßen aussieht:

A10020;1;ARA;975639001;25.05.2004;04NK13730;51147;C:\test\uldaten\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
A10020;1;ARA;975639001;15.12.2004;04NK29630;51147;C:\test\uldaten\2004-12-15\A10020-1-975639001-20041215-ARA-51147.rtf
A10020;1;CAPM;;;;995584001;C:\test\uldaten\A10020-1-995584001-CAPM.tif
A10020;1;QF;;;;;C:\test\uldaten\A10020-1-QF.rtf
.....

Ich habs schon versucht einen zusätzlichen Delimmer - einzubauen, so dass ich das Feld aufspalten kann und mir den Wert nehmen kann, aber das geht wieder nur mit Zeilen in der Datendatei die die gleiche Anzahl an - Zeichen haben, denn sonst ist die Anzahl der Spalten pro Zeile unterschiedlich. Hier dazu ein Besipiel was ich meine wenn ich - und ; als delimmer gleichzeitig benutze:

Output
A10020;1;975639001;20040525;ARA;51147;A10020-1-975639001-20040525-ARA-51147;25.05.2004;ARA;1;04NK13730;51147;975639001
A10020;1;975639001;20041215;ARA;51147;A10020-1-975639001-20041215-ARA-51147;15.12.2004;ARA;1;04NK29630;51147;975639001
A10020;1;995584001;CAPMA;10020-1-995584001-CAPM;;CAPM;1;;;995584001
A10020;1;QF;A10020-1-QF;;QF;1;;;
......
Ach, einfach schwer zu erklären, im Grunde will ich eigentlich nur diese Spalte mit A10020(kann auch andere Nummer sein) als zusätliche Spalte in dem Output.

Falls jemand das nicht versteht, was ich meine, einfach hier reinschreiben, versuche es dann anders zu erklären.

Danke schonmal
Bitte warten ..
Mitglied: bastla
31.07.2008 um 13:42 Uhr
Hallo rübensau!

Ich habs schon versucht einen zusätzlichen Delimmer - einzubauen
Du musst ja nicht alles in einem Durchgang erledigen - ersetze Zeile 9 durch
01.
for /f "delims=-" %%t in ("%EinZeile%") do set "AusZeile=%%t" 
02.
set "AusZeile=%AusZeile%;%4;%3;%7;%2;%5;%6"
Grüße
bastla

P.S.: Ein "Delimmer" macht's oft noch schlimmer - versuch's mal mit einem "Delimiter" ... *SCNR*
Bitte warten ..
Mitglied: ruebensau
31.07.2008 um 13:54 Uhr
danke bastla,
du hast mir den tag gerettet

gruß
rübe
Bitte warten ..
Ähnliche Inhalte
Windows Installation
MDT 2013 Images Fehlerhaft

Frage von SebastianH zum Thema Windows Installation ...

Batch & Shell
Batchjob Ping Abfrage fehlerhaft (2)

Frage von LukiDensi zum Thema Batch & Shell ...

Administrator.de Feedback
gelöst Bug in einzelnen Threads: Antwortübersicht fehlerhaft bzw. unvollständig (4)

Frage von em-pie zum Thema Administrator.de Feedback ...

Windows 10
RDP Verbindung auf PC fehlerhaft, auf Handy jedoch problemlos! (3)

Frage von MarcoSwatch zum Thema Windows 10 ...

Neue Wissensbeiträge
Backup

Veeam-Fehler bei Bandwechsel: Timed out waiting for tape

Tipp von goRaini zum Thema Backup ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (55)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

Frage von Axel90 zum Thema LAN, WAN, Wireless ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...