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, 2612 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?

Mit freundlichen Grüßen
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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

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

Frage von coca22COCA zum Thema Webentwicklung ...

Windows Userverwaltung
gelöst Kaputtes Lokales-Profil neu erstellen mit Office Einstellungen. Fehlerhaft (1)

Frage von fireskyer zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
W-LAN Access Point bekommt keinen Strom über PoE. Kabel fehlerhaft? (7)

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

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

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

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 ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...