Jump to content

Batch-Datei?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leuts,

 

ich bräuchte eine Lösung für folgendes Problem:

 

Ich habe eine csv Datei (Trennung der Felder durch ein Semikolon) in dieser Form: Vorname;Name;Straße;PLZ;Ort

 

Jetz möchte ich mit einem Programm (vielleicht per VBS oder eine Batch -Datei) die Felder umstellen:

Name;Vorname;PLZ;Ort;Straße

 

Das Programm müsste folgenden können:

1. Man müsste dem Programm sagen woher die Daten kommen (Input)

2. Dem Programm sagen wie es die Daten (Felder) umzustellen hat (Output)

3. Ausführen programm.exe c:\daten\quelldatei.csv c:\daten\zieldatei.csv

 

Vielleicht kann mir jemand helfen, wäre klasse!

 

Gruß

Schranzi

 

PS: Die Lösung ist egal, dass Ergebnis ist wichtig!

Link zu diesem Kommentar

:: keine ausgabe von message
@echo off
:: ersten parameter in variable fidIn speicher
:: es handelt sich hierbei um die eingabedatei (Vorname;Name;Straße;PLZ;Ort)
set fidIn=%1
:: zweiter parameter in variable fidOut speicher
:: es handelt sich hierbei um die ausgabedatei (Name;Vorname;PLZ;Ort;Straße)
set fidOut=%2
:: dritter parameter in variable execPrg speicher
:: angabe des programs welches anschliessend ausgefuehrt werden soll (notepad)
set execPrg=%3 
:: schleife ueber alle zeilen welche sich in der eingabedatei (fidIn) befinden
:: tokens = zeichen = 5; delims = zeichentrenner (feldtrenner)
:: %%0 wird der erste wert gespeichert, die anderen werte in der zeile werden
:: automatisch den numerischen werten in aufsteigender reihenfolge zugewiesen
:: %%A sit demnach auch moeglich
for /f "tokens=1-5* delims=;" %%0 in (%fidIn%) do (
               :: zwei kommentar zeilen, koennen auch entfernt werden
	REM ~ echo %%1;%%0;%%3;%%4;%%2
	REM ~ echo %%1;%%0;%%3;%%4;%%2 >> %2
               :: die werte in der gewuenschten sortierung in die ausgabedatei schreiben
	echo %%1;%%0;%%3;%%4;%%2 >> %fidOut%
)
:: program starten parameteruebergabe ist die ausgabedatei
start %execPrg% %fidOut%

 

die datei sowie eine csv habe ich angefuegt, einfach in ein verzeichnis kopieren und wie folgt aufrufen

csv.cmd t.csv o.txt notepad

 

gruesse,

sfoc

Link zu diesem Kommentar

Hallo,

 

der For-Befehl unter Win98/ME kennt weder "/f " noch "tokens=?" noch "delims=?".

 

Unter diesen Systemen mußt Du Dir mit einem Tool mit dem Namen "LMOD" behelfen. Außerdem für den Zähler noch "VARSET", beides Freeware und sehr gut von http://home.mnet-online.de/horst.muc/german.htm.

 

Hier mußt Du das ganze ohne "for" in einer Schleife ablaufen lassen z.B.:

 

 
@echo off
cls
set fidIn=%1
set fidOut=%2
set execPrg=%3 
call varset x=lines of %fidIn%
call var set y=1
:zs1
type %fidIn%|lmod /S,; /L%y% [$2];[$1];[4];[$5];[3]>>%fidOut%
if %y%==%x% goto zs2
call var set y=%y%+1
goto zs1
:zs2
start %execPrg% %fidOut%
cls

 

Ist also fast das gleiche, nur daß dazu etwas fremde Hilfe (Tools) benötigt wird. Läuft auch unter W2K/XP

 

MfG maneich

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...