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

Wie CSV per Batch oder VBS in Fremdformat umwandeln ?!

Frage Entwicklung Batch & Shell

Mitglied: crashzero2000

crashzero2000 (Level 2) - Jetzt verbinden

29.06.2009, aktualisiert 14:13 Uhr, 7531 Aufrufe, 9 Kommentare

Hallo, ich habe schon im Board die Artikel zur Umwandlung durchgeforstet, leider trifft keins mein Problem.Ich bin auch leider kein sehr guter Programmer und benötige da etwas Hilfestellung.

Ich habe eine Excel welche per Makro in eine CSV exportiert.
Format : CSV
Zeile 1-3 enthält Überschriften und müssen augeblendet werden
1: Langer Text;;;;;29.06.2009
2: Text1;Text2;Text3.;Text4;Text5;Text6
3: Text7;Text8;Text9.;Text10;Text11;Text12
Die CSV enthält 6 Spalten , die meisten mit Inhalt, einige können auch leer sein.
Zeilen & Spalten mit den wichtigen Informationen :
Text1;Text2;Text3[Auch mal mit Doppelpunkt];Text4[Auch mal mit Doppelpunkt];Text5;Text6

Ich benötige nun folgendes Format :
Zeile 1-3 : Weglassen
Datenzeilen : [Als Trennzeichen zwischen den Texten | chr$(124) - Pipe]
Text1 [6 Zeichen,Mehrzeichen abkappen]|Text2 [Max. 15 Zeichen,Mehrzeichen abkappen]|Text3[5 Zeichen,Mehrzeichen abkappen]|Text4[5 Zeichen,Mehrzeichen abkappen],Text5[15 Zeichen,Mehrzeichen abkappen]|Text6[6 Zeichen,Mehrzeichen abkappen]

Der Vorgang dann bis nichts mehr in den Datenzeilen steht [Da die Menge der Datenzeilen variabel ist-also auch länger bzw. kürzer sein kann].

Dazu kommt das eine Datei im allgmeinen erstellt werden soll welchen ich mir aber per Basic oder Batch verbinden kann :
TEXTBLOCK [Immer gleicher Inhalt]
DATENBLOCK [Variabel, siehe oben]
TEXTBLOCK [Immer gleicher Inhalt]
DATENBLOCK [Variabel, siehe oben]
TEXTBLOCK [Immer gleicher Inhalt]

Geht das ev. auch per VBS oder Batch ?
Nach Zusammenstellen der Gesamtdatei muß diese dann per FTP versendet werden.

Ich hoffe mir kann jemand helfen, die Scriptings die ich hier schon gesehen habe sind ja genial, bringen mich aber nicht wirklich weiter da mein Programmier-Know-How mir da nicht weiterhilft.
Mitglied: bastla
29.06.2009 um 15:59 Uhr
Hallo crashzero2000 und willkommen im Forum!

Als VBScript etwa so:
01.
CSV = "D:\Datei.csv" 
02.
Neu = "D:\Datei.txt" 
03.
Delim = "|" 'Trennzeichen 
04.
L = Array(6,15,5,5,15,6) 'Feldlängen 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Daten = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLF) 
08.
 
09.
Set DateiNeu = fso.CreateTextFile(Neu, True) 
10.
U = UBound(Daten) 
11.
For i = 3 To U 'erste 3 Zeilen überspringen 
12.
    If Trim(Daten(i)) <> "" Then 'keine Leerzeilen verarbeiten 
13.
        Felder = Split(Daten(i), ";") 
14.
        Satz = Left(Felder(0), L(0)) 
15.
        For j = 1 To Ubound(Felder) 
16.
            Satz = Satz & Delim & Left(Felder(j), L(j)) 
17.
        Next 
18.
    End If 
19.
    If i < U Then 'nach letztem Datensatz keine Zeilenschaltung 
20.
        DateiNeu.WriteLine Satz 
21.
    Else 
22.
        DateiNeu.Write Satz 
23.
    End If 
24.
Next 
25.
DateiNeu.Close
Grüße
bastla
Bitte warten ..
Mitglied: crashzero2000
30.06.2009 um 12:14 Uhr
Genial - Genau was ich brauchte - Einfach super - Ich Danke dir !!!!!!!!

Ein kleines Problem ist da noch, nicht weiter wild :

Die Datei sieht nun ungefähr so aus :

Text1|Text2|Text3|Text4|Text5|Text6
Tex|Text|Text|..... <- Problemzeile

Ich müßte die Pipes alle untereinander haben, so daß , egal [Deshalb die Feldgrößen] ob der Text auch kürzer ist oder länger, die Pipes direkt untereinander stehen [Leider]
Also so ....
Text1|Text2|Text3|Text4|Text5|Text6
Tex |Text |Text |.....

Wenn das noch klappt - Dann hast du wirklich was gut bei mir !!!!
Bitte warten ..
Mitglied: bastla
30.06.2009 um 13:12 Uhr
Hallo crashzero2000!

Um mit Leerzeichen aufzufüllen, müsstest Du nur folgende Zeilen 14
Satz = Left(Felder(0) & Space(L(0)), L(0))
bzw 16
Satz = Satz & Delim & Left(Felder(j) & Space(L(j)), L(j))
verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: crashzero2000
30.06.2009 um 13:24 Uhr
Genial - Super, funktioniert einwandfrei.

Du hast was gut bei mir ! Definitiv.

Mailkontakt ?
Bitte warten ..
Mitglied: bastla
30.06.2009 um 13:26 Uhr
Hallo crashzero2000!

Lass stecken - freut mich, wenn's funktioniert.

Grüße
bastla
Bitte warten ..
Mitglied: tendax
25.09.2009 um 05:03 Uhr
Hallo, ich häng mich mal hier ran, ich bin auf der Suche nach nach einer änlichen kovertierung ich möchte ein Telefon liste (.csw mit Komma trennzeichen) in eine .inf (konvertieren). Ich such schon seid ner Woche nach einem Converter der mir das erledigt aber bisher hab ichs nur geschafft aus den Ursprungsdatensätzen eine .csv zu erzeugen. Vielleicht kennt ja jemand das Zielformat und kann mir einen Tip geben nach was für einen konverter ich da suchen muss.

Ausgangsformat:

Name , Telefonnummer
NameA , 040123456
NameB, 0405678910
NameC, 03012345
usw.

Zielformat:

[#0] <<< Fortlaufende Nummer
AutoRe=0 <<< immer gleich
Bl=0 <<< immer gleich
Com= <<< immer gleich
Custom=0 <<< immer gleich
FonAnn= <<< immer gleich
FonDoAn=0 <<< immer gleich
FonDoIm=0 <<< immer gleich
FonNoRe=0 <<< immer gleich
Name=NameA <<< Name aus der Spalte "NAME"
NoPopup=0 <<< immer gleich
Number=040123456 <<< Nummer aus der Spalte "Telefonnummer"
Run= <<< immer gleich
Sound= <<< immer gleich
Vip=0 <<< immer gleich

[#0] <<< Fortlaufende Nummer
AutoRe=0 <<< immer gleich
Bl=0 <<< immer gleich
Com= <<< immer gleich
Custom=0 <<< immer gleich
FonAnn= <<< immer gleich
FonDoAn=0 <<< immer gleich
FonDoIm=0 <<< immer gleich
FonNoRe=0 <<< immer gleich
Name=NameB <<< Name aus der Spalte "NAME"
NoPopup=0 <<< immer gleich
Number=0405678910 <<< Nummer aus der Spalte "Telefonnummer"
Run= <<< immer gleich
Sound= <<< immer gleich
Vip=0 <<< immer gleich

usw.

Wär super wenn da jemand einen Tip für mich hätte, sind fast 1500 Datensätze.

Gruß tendax
Bitte warten ..
Mitglied: bastla
25.09.2009 um 07:27 Uhr
Hallo tendax und willkommen im Forum!
ich häng mich mal hier ran
Nicht die allerbeste Idee - mit einem eigenen Thread erreichst Du sicher eine wesentlich größere Anzahl an Lesern ...

... anyhow - versuch es mit dem folgenden Batch:
01.
@echo off & setlocal 
02.
set "Ein=D:\Telefonliste.csv" 
03.
set "Aus=D:\Telefonliste.ini" 
04.
set /a Kopfzeilen=1 
05.
 
06.
if exist "%Aus%" del "%Aus%" 
07.
set /a Nr=0 
08.
for /f "usebackq skip=%Kopfzeilen% tokens=1,2 delims=," %%i in ("%Ein%") do call :ProcessLine "%%i" "%%j" 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
set /a Nr+=1 
13.
14.
    echo [%Nr%] 
15.
    echo AutoRe=0 
16.
    echo Bl=0 
17.
    echo Com= 
18.
    echo Custom=0 
19.
    echo FonAnn= 
20.
    echo FonDoAn=0 
21.
    echo FonDoIm=0 
22.
    echo FonNoRe=0 
23.
    echo Name=%~1 
24.
    echo NoPopup=0 
25.
    echo Number=%~2 
26.
    echo Run= 
27.
    echo Sound= 
28.
    echo Vip=0 
29.
    REM Leerzeile 
30.
    echo\ 
31.
)>>"%Aus%" 
32.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: tendax
25.09.2009 um 14:58 Uhr
@bastla jo ich weis das es so nicht die meisten hits gibt, aber ihc möchte auch nicht als erste Handlung das Forum unnötig zumüllen.

Erst mal ein großes Danke für das Script. Es funktioniert soweit ganz gut. Auf den ersten Blick sieht alles aus wie es soll. Leider stürzt das Programm ab sobald ich es starte. Nach langem suchen und rumprobieren habe ich herausgefunden woran es liegt:

Am ende jedes Datensatzes wird mit "REM Leerzeile" eine Leerzeile eingefügt. das Problem ist das in dieser Leerzeile auch ein Leerzeichen drin ist wenn ich dieses Leerzeichen rauslösche wird die .inf korrekt eingelesen.

Ich hab auch schon mal gegoogelt aber anscheinend ist das Einfügen von einer Leerzeile (ohne Leerzeichen) in ner Batch ein Problem. Gibts da vielleicht einen Trick?

Wenn du damit einverstanden bist dann würde ich das Script auch gerne irgendwo online stellen weil ich denke das, das script auch für andere hilfreich ist (ich lese damit eine Telefonliste in Moony ein kleines ISDN Telefontool ein). Schreibe natürlich gerne eine Copyrighthinweis oder änliches für dich rein wenn du möchtest!

Gruß

tendax
Bitte warten ..
Mitglied: bastla
25.09.2009 um 15:26 Uhr
Hallo tendax!
Am ende jedes Datensatzes wird mit "REM Leerzeile" eine Leerzeile eingefügt.
Stimm so nicht - die Leerzeile wird durch
echo\
eingefügt (die "REM"-Zeile 29 hat rein informativen Character und kann auch gerne entfernt werden).

Sollte sich (was sich erfahrungsgemäß aufgrund der Forensoftware hier nicht ausschließen lässt) hinter dem "\" noch ein Leerzeichen befinden, dann ist die Leerzeile tatsächlich nicht leer - daher Zeile 30 dahingehend überprüfen (oder, wenn die Leerzeile nicht benötigt/gewünscht ist, gleich zusammen mit Zeile 29 entsorgen) ...
Wenn du damit einverstanden bist dann würde ich das Script auch gerne irgendwo online stellen weil ich denke das, das script auch für andere hilfreich ist (ich lese damit eine Telefonliste in Moony ein kleines ISDN Telefontool ein).
Nur zu ...
Schreibe natürlich gerne eine Copyrighthinweis oder änliches für dich rein wenn du möchtest!
Nicht nötig.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Csv (und andere Dateien) in charset utf-8 umwandeln (batch)
gelöst Frage von OKIDOKIBatch & Shell4 Kommentare

Guten Abend, ich hänge seit Tagen an einem Problem: Eine csv und php Datei möchte ich, wie der Titel ...

Batch & Shell
XML in CSV umwandeln
gelöst Frage von jochengBatch & Shell2 Kommentare

Hallo Leute Ich habe folgende XML Datei die ich mit einem Batch in eine CSV umwandeln will. Mein Problem ...

VB for Applications
Csv in xml umwandeln mit VBA
Frage von 130771VB for Applications8 Kommentare

Hallo zusammen, ich bin neu in der Commuity und auch neu im Bereich der Programmierung mit VBA. Ich habe ...

Batch & Shell
CSV mit Powershell umwandeln
gelöst Frage von mayli01Batch & Shell3 Kommentare

Hallo, in einer spalte einer CSV Datei habe ich zahlen von 0-100. Die spalte enthält eine Kopfzeile (Stk.). Nun ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 5 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 7 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 10 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 16 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...