2017-06-08 4 views
0

Ich habe mehrere Dateien mit jeweils dem gleichen DateinamenBatch-Befehl - CSV-Datei lesen und identifizierter Dateinamen mit Multi Inhalt

Beispiel erstellen:

  • Test.csv
  • Test (1) .csv
  • Test (2) CSV
  • Test (3) CSV

Der Inhalt in jeder Datei ist jedoch unterschiedlich.

In der ersten und zweiten Zeile der Datei innerhalb Token Spots 2 und 4 kann ich die Datei identifizieren. Ich möchte die Dateien mit diesen zwei Datenpunkten umbenennen.

Beispiel

Innerhalb test.csv Datei, die Zeilensatz 1 und 2

  • H, Projizierte, Kosten
  • 1, Essen, Apfel, Obst, 55

Innerhalb Test (1) .csv Liniensatz 1 und 2

  • H, Actual, Kosten
  • 1, Essen, Apfel, Obst, 45

Im Test (2) CSV-Linie Satz 1 und 2

  • H, Projizierte, Kosten
  • 1, Auto, Honda, Auto, 5500

Im Test (3) .csv Linie Satz 1 und 2

  • H, Actual, Kosten
  • 1, Auto, Honda, Auto, 6500

Ich möchte die folgenden Dateien als

  • Test.csv = Fruit_Projected.csv
  • umbenennen Test (1) CSV = Fruit_Actual.csv
  • Test (2) CSV = Auto_Projected.csv
  • Test (3) CSV = Auto_Acutal.csv

Im Moment kann ich die Dateien mit den Daten in Zeile 2 und dem 4. Token identifizieren und umbenennen. Ich möchte in der Lage sein, die beiden Daten in Zeile 2 (Token 4) und Zeile 1 (Token 2) zu verketten. Unten ist mein aktueller Code.

@echo off 

for %%i in (*.csv) do (
    for /f "skip=1 token=4 delims=," %%j in ('findstr /B /I "^" "%%i"') do (
    ren "%%i" "%%j.temp_txt" 
) 
) 

ren *.temp_txt *.csv 

Antwort

0

Die folgenden (ungetestet) Batch iteriert die csv der und zählt die Zeilen des Inhalts, speichert line1 token2 im var L1T2 amd line2 token4 zu L2T4.
Der resultierende Umbenennungsbefehl wird in einem (Pseudo-) Array gespeichert und am Ende ausgeführt.
Um die Umbenennungen wirklich auszuführen, entfernen Sie das Echo in der letzten Zeile.

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
Set Cnt=0 
for %%i in (*.csv) do (
    Set /A "Line=0,Cnt+=1" 
    for /f "tokens=2,4 delims=," %%A in ('Type "%%i"') do (
    Set /A Line+=1 
    If !Line! equ 1 Set "L1T2=%%A" 
    If !Line! equ 2 Set "L2T4=%%B" 
) 
    Set Ren[!Cnt!]=ren "%%i" "!L2T4!_!L1T2!.csv" 
) 
For /L %%C in (1,1,%Cnt%) Do Echo !Ren[%%C]! 
+0

Arbeitete super danke! –

Verwandte Themen