Wie CSV per Batch oder VBS in Fremdformat umwandeln ?!
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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119309
Url: https://administrator.de/forum/wie-csv-per-batch-oder-vbs-in-fremdformat-umwandeln-119309.html
Ausgedruckt am: 26.12.2024 um 17:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo crashzero2000 und willkommen im Forum!
Als VBScript etwa so:
Grüße
bastla
Als VBScript etwa so:
CSV = "D:\Datei.csv"
Neu = "D:\Datei.txt"
Delim = "|" 'Trennzeichen
L = Array(6,15,5,5,15,6) 'Feldlängen
Set fso = CreateObject("Scripting.FileSystemObject")
Daten = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLF)
Set DateiNeu = fso.CreateTextFile(Neu, True)
U = UBound(Daten)
For i = 3 To U 'erste 3 Zeilen überspringen
If Trim(Daten(i)) <> "" Then 'keine Leerzeilen verarbeiten
Felder = Split(Daten(i), ";")
Satz = Left(Felder(0), L(0))
For j = 1 To Ubound(Felder)
Satz = Satz & Delim & Left(Felder(j), L(j))
Next
End If
If i < U Then 'nach letztem Datensatz keine Zeilenschaltung
DateiNeu.WriteLine Satz
Else
DateiNeu.Write Satz
End If
Next
DateiNeu.Close
bastla
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
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
Hallo tendax und willkommen im Forum!
... anyhow - versuch es mit dem folgenden Batch:
Grüße
bastla
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:
@echo off & setlocal
set "Ein=D:\Telefonliste.csv"
set "Aus=D:\Telefonliste.ini"
set /a Kopfzeilen=1
if exist "%Aus%" del "%Aus%"
set /a Nr=0
for /f "usebackq skip=%Kopfzeilen% tokens=1,2 delims=," %%i in ("%Ein%") do call :ProcessLine "%%i" "%%j"
goto :eof
:ProcessLine
set /a Nr+=1
(
echo [%Nr%]
echo AutoRe=0
echo Bl=0
echo Com=
echo Custom=0
echo FonAnn=
echo FonDoAn=0
echo FonDoIm=0
echo FonNoRe=0
echo Name=%~1
echo NoPopup=0
echo Number=%~2
echo Run=
echo Sound=
echo Vip=0
REM Leerzeile
echo\
)>>"%Aus%"
goto :eof
bastla
@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
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
Hallo tendax!
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) ...
Grüße
bastla
Am ende jedes Datensatzes wird mit "REM Leerzeile" eine Leerzeile eingefügt.
Stimm so nicht - die Leerzeile wird durchecho\
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