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

BATCH: Information aus CSV Datei holen und für Umbenennung einer Datei nutzen

Frage Entwicklung Batch & Shell

Mitglied: Lakslo

Lakslo (Level 1) - Jetzt verbinden

13.03.2014, aktualisiert 19.03.2014, 1506 Aufrufe, 5 Kommentare

Liebe Batch Profis,

ich bin damit konfrontiert aus einer CSV Datei einen Wert zu holen und mit diesem Wert die Datei (dieselbe Datei) umzubenennen. Ich habe wirklich keine Ahnung wie man das angehen könnte – es sollte wenn irgendwie möglich mit einem normalen Script (.cmd Datei) funktionieren.

Als Beispiel …
CSV Datei mit Namen „Final_Ergebnis_MAN17.csv“ schaut so aus:
Buchungskreis;Budgetjahr;Stichtag;Stelle LFD;Stellennummer;Unterabschnitt;Kurztext
1002;2014;20140313 ;00001952;00001952;010000;AL

Ich möchte den Buchungskreis (=1002) auslesen und dann den Namen des Files ändern in:
„DPP1002_yyyymmdd.csv“

Das Datum ist mir klar – aber wie ich den Wert = 1002 bekomme leider nicht.
Gibt es Vorschläge, Ideen?

LG
Lakslo

PS: Die nächste Herausforderung wird dann noch das ganze in einer "for /f" Schleife für X Dateien zu implementieren ...
Mitglied: bastla
LÖSUNG 13.03.2014, aktualisiert 19.03.2014
Hallo Lakslo!

Unter der Annahme, dass der gesuchte Buchungskreis immer am Beginn der 2. Zeile steht und die Dateien nach dem Schema "Final_Ergebnis_*.csv" benannt sind, könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner mit den csv-Dateien" 
03.
set "Datei=Final_Ergebnis_*.csv" 
04.
 
05.
pushd "%Ordner%" 
06.
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile "%%i" 
07.
pause 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
set "BK=" 
12.
for /f "usebackq skip=1 tokens=1 delims=;" %%a in (%1) do if not defined BK set "BK=%%a" 
13.
if not defined BK ( 
14.
    echo Buchungskreis in %1 nicht gefunden! 
15.
    pause 
16.
    goto :eof 
17.
18.
echo ren %1 "DPP%BK%_%date:~-4%%date:~-7,2%%date:~-10,2%.csv" 
19.
goto :eof
Wegen des echo vor dem ren wird das Umbenennen zunächst nur durch Ausgabe des jeweilgen Befehls simuliert - wenn Du das echo (und die dann überflüssige Zeile 7) weg lässt, werden die Namen tatsächlich (und kommentarlos) geändert.

Grüße
bastla
Bitte warten ..
Mitglied: Lakslo
15.03.2014 um 17:20 Uhr
Hallo bastla,

vielen Dank für Deine Unterstützung.
Ich werde das nächste Woche testen und mich dann (hoffentlich) am Ende der Woche nochmals ganz herzlich bedanken ...

LG
Lakslo
Bitte warten ..
Mitglied: Lakslo
19.03.2014, aktualisiert um 17:02 Uhr
Hallo bastla,a

das sieht schon sehr gut aus - vielen Dank dafür.
Jetzt bin ich noch auf die Idee gekommen statt dem Datum gleich den Stichtag aus dem File zu nehmen. Habe das folgendermassen versucht - funkt aber leider nicht da die Dateiendung im Weg ist. Neu ist als PrcessFile2 - hast Du da auch noch eine Idee?

LG
Lakslo

01.
pushd "%Ziel1%" 
02.
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile1 "%%i" 
03.
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile2 "%%i" 
04.
pause 
05.
goto :eof 
06.
 
07.
:ProcessFile1 
08.
set "BK=" 
09.
for /f "usebackq skip=1 tokens=1 delims=;" %%a in (%1) do if not defined BK set "BK=%%a" 
10.
if not defined BK ( 
11.
    echo Buchungskreis in %1 nicht gefunden! 
12.
    pause 
13.
    goto :eof 
14.
15.
ren %1 "DPP%BK%.csv" 
16.
goto :eof 
17.
 
18.
:ProcessFile2 
19.
set "Stichtag=" 
20.
for /f "usebackq skip=1 tokens=3 delims=;" %%a in (%1) do if not defined Stichtag set "Stichtag=%%a" 
21.
 
22.
if not defined Stichtag ( 
23.
    echo Stichtag in %1 nicht gefunden! 
24.
    pause 
25.
    goto :eof 
26.
27.
echo ren %1 %1_%Stichtag%.csv 
28.
 
29.
goto :eof
Bitte warten ..
Mitglied: bastla
LÖSUNG 19.03.2014, aktualisiert um 18:47 Uhr
Hallo Lakslo!

Wenn Du das Datum aus Feld 3 der CSV-Datei meinst etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner mit den csv-Dateien" 
03.
set "Datei=Final_Ergebnis_*.csv" 
04.
 
05.
pushd "%Ordner%" 
06.
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile "%%i" 
07.
pause 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
set "BK=" & set "Datum=" 
12.
for /f "usebackq skip=1 tokens=1,3 delims=;" %%a in (%1) do if not defined BK (set "BK=%%a" & set "Datum=%%b") 
13.
if not defined BK ( 
14.
    echo Buchungskreis in %1 nicht gefunden! 
15.
    pause 
16.
    goto :eof 
17.
18.
if not defined Datum ( 
19.
    echo Datum in %1 nicht gefunden! 
20.
    pause 
21.
    goto :eof 
22.
23.
echo ren %1 "DPP%BK%_%Datum%.csv" 
24.
goto :eof
Grüße
bastla

P.S.: Verwende für das Posten von Code bitte das passende Format - geht auch nachträglich noch ...
Bitte warten ..
Mitglied: Lakslo
19.03.2014 um 18:48 Uhr
Hallo bastla,

hat SUPER funktioniert.
Vielen Dank!

LG
Lakslo

PS: Formatierung natürlich nachgetragen
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien aus CSV mit Batch suchen
gelöst Frage von joes1609Batch & Shell5 Kommentare

Hallo zusammen, ich stehe gerade auf dem Schlauch. Ich habe eine CSV-Datei, in der stehen zusammengesetzt, jeweils ein kompletter ...

Batch & Shell
Mehrere CSV Dateien via Batch zu einer CSV-Datei zusammenfassen
gelöst Frage von neokraftBatch & Shell2 Kommentare

Hallo zusammen, vermutlich ein ganz billiges Problem. Ich hab das ganze bisher so versucht: type *.csv >> output.txt ren ...

Batch & Shell
Variable aus anderer Bat-Datei holen
gelöst Frage von asterixBatch & Shell7 Kommentare

Hallo zusammen Ich möchte in einer Bat-Datei eine variable aus einer anderen Bat-Datei holen. Wie schaff ich das nun, ...

Batch & Shell
Batch - Informationen eingrenzen
gelöst Frage von MuhavaBatch & Shell2 Kommentare

Guten Tag allerseits, ich arbeite an einem Programm das mir die Komponenten eines PCs zusammen schreiben soll, so das ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 2 StundenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...