flo7689
Goto Top

CSV-Datei via Batch abarbeiten

Halli hallo hallöle zusammen,

leider versagen meine Batch-Kenntnisse bei folgendem Problem... Deshalb hoffe ich mal, dass ihr mir helfen könnt! face-smile

Ich habe eine CSV-Datei in der eine Zahl und ein Name steht (pro Zeile).
Also so:
12345;Klaus
54321;Franz
98754;Emil
...

Nun möchte ich anhand von den Namen in dieser CSV-Datei einige Ordner anlegen und das automatisch und für die komplette CSV-Datei.

Folgenden Code habe ich schon:

@echo off & setlocal

rem CSV und Delimiter setzen
set "liste=D:\test\namen.csv"  
set "Delim=;"  

rem Nummer abfragen
set /p Eingabe=nr: 
if not defined Eingabe (echo Es wurde kein Datensatz gefunden! & pause & goto :eof)

rem Nummer und Name in Variablen speichern
set nr=
for /f "tokens=1-2 delims=%Delim%" %%a in ('findstr /b /i /c:"%Eingabe%%Delim%" "%liste%"') do (  
    set "nr=%%a"  
    set "name=%%b"  
    )

rem Fehler-Code
if not defined nr (echo Die Nummer "%Eingabe%" wurde nicht gefunden! & pause & goto :eof)  

rem Aktion:
mkdir %nr%_%name%
echo "%nr%_%name%" wurde erfolgreich angelegt!  

pause

Allerdings muss ich nun jede Nummer manuell eingeben, dann folgt die Überprüfung und dann wird der entsprechende Ordner angelegt.
Daher die Frage: Wie kann ich das ganze mit einer FOR-Schleife (?) automatisieren, dass für jeden Eintrag in der CSV-Datei ein Ordner angelegt wird?

Vielen Dank schon einmal für eure Hilfe!
Grüße
Flo

Content-Key: 147960

Url: https://administrator.de/contentid/147960

Printed on: April 24, 2024 at 07:04 o'clock

Member: bastla
bastla Jul 29, 2010 at 17:17:54 (UTC)
Goto Top
Hallo flo7689!

Du hattest in Deinem Ansatz ja schon alles Wesentliche - eine Reduktion auf selbiges könnte daher so aussehen:
@echo off & setlocal

rem CSV und Delimiter setzen
set "liste=D:\test\namen.csv"  
set "Delim=;"  

for /f "usebackq tokens=1-2 delims=%Delim%" %%a in ("%liste%") do (  
    md "%%a_%%b"  
    echo "%%a_%%b" wurde erfolgreich angelegt!  
)
pause
Kurze Anmerkung zur "for"-Schleife: mit "usebackq" kannst Du den Dateipfad unter Anführungszeichen angeben (ohne "usebackq" würde er als zu zerlegender einzeiliger Text interpretiert) ...

Grüße
bastla
Member: flo7689
flo7689 Jul 29, 2010 at 17:28:49 (UTC)
Goto Top
Hey bastla,

super, vielen Dank! Funktioniert super! face-smile
Danke!

Gruß