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

Output einer Stapelverarbeitungsdatei fehlerhaft

Frage Entwicklung Batch & Shell

Mitglied: ruebensau

ruebensau (Level 1) - Jetzt verbinden

31.07.2008, aktualisiert 18.10.2012, 2634 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 Tools
WMIC Serial Output in Variable
Tipp von MasterBaiterWindows Tools3 Kommentare

Mit diesem Befehl lässt sich die Ausgabe aus WMIC in eine Variable stecken: In diesem Beispiel ist es die ...

Ubuntu
Bestimmten crontab output unterdrücken
gelöst Frage von fireskyerUbuntu2 Kommentare

os: ubuntu 10.04. LTS Hallo Leute, Wir haben ein Script, dass regelmäßig über Crontab eine update Aktualisierung vornimmt. Wir ...

Batch & Shell
Diskpart.exe output in Textdatei per CMD
gelöst Frage von gabrixlBatch & Shell7 Kommentare

Hallo Zusammen Ich möchte den Output von DETAIL DISK in eine Textdatei schreiben. Mein Ansatz ist wie folgt: Script: ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript
gelöst Frage von coca22COCAWebentwicklung2 Kommentare

Ich habe ein html link der eine Seite öffnet, doch der Output der da raus kommt möchte ich in ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 106 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing7 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...