2017-05-04 2 views
0

Die von uns verwendete HR-Software ermöglicht den Import von CSV-Dateien. Der von einem Drittanbieter stammende Dump wird jedoch nicht als CSV-Datei formatiert.Mehrere Vorkommen eines Kommas durch ein Komma ersetzen

Ich habe eine Batch-Datei geschrieben, um es in eine CSV-Datei zu verarbeiten, aber es gibt einen Teil der Dump-Datei, wo es mehrere Leerzeichen geben könnte (es kann für jede Zeile anders sein) und wenn ich Leerzeichen durch Kommas I ersetzen am Ende mit mehreren Kommas.

Wie kann ich meine Batchdatei aktualisieren, um jedes Vorkommen von zwei oder mehr Kommas auf ein Komma zu ändern?

Original-Datei:

096 Parisella, Onorato - Perm   030417 05:53 
000          030417 06:44 
127 Thomas, Vincent - Perm    030417 06:44 
040 Ram, Gurdial - Perm     030417 07:09 
100 Smano, Petros - Perm     030417 07:12 
128 Machenbach, Werner - Perm   030417 07:13 
147 Samanovic, Milan      030417 07:14 
047 Hopkins, Hugo - Perm     030417 07:16 

Meine aktuelle Batch-Datei:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

set "search= - Perm" 
set "replace=" 

set "textFile=FINGERTEC RAW DATA*.txt" 
set "rootDir=." 

for %%j in ("%rootDir%\%textFile%") do (
    for /f "delims=" %%i in ('type "%%~j" ^& break ^> "%%~j"') do (
     set "line=%%i" 
     setlocal EnableDelayedExpansion 
     set "line=!line:%search%=%replace%!" 
     >>"%%~j" echo(!line! 
     endlocal 
    ) 
) 

set "search= " 
set "replace=," 

set "textFile=FINGERTEC RAW DATA*.txt" 
set "rootDir=." 

for %%j in ("%rootDir%\%textFile%") do (
    for /f "delims=" %%i in ('type "%%~j" ^& break ^> "%%~j"') do (
     set "line=%%i" 
     setlocal EnableDelayedExpansion 
     set "line=!line:%search%=%replace%!" 
     >>"%%~j" echo(!line! 
     endlocal 
    ) 
) 

endlocal 

Stromausgang:

096,Parisella,,Onorato,,,,,,,,,,,,030417,05:53 
000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,030417,06:44 
127,Thomas,,Vincent,,,,,,,,,,,,,,,030417,06:44 
040,Ram,,Gurdial,,,,,,,,,,,,,,,,,,030417,07:09 
100,Smano,,Petros,,,,,,,,,,,,,,,,,030417,07:12 
128,Machenbach,,Werner,,,,,,,,,,,,030417,07:13 
147,Samanovic,,Milan,,,,,,,,,,,,,,,,,,,,,030417,07:14 
047,Hopkins,,Hugo,,,,,,,,,,,,,,,,,030417,07:16 

Bitte beachten Sie, dass ich keine Tools von Drittanbietern nutzen können.

Antwort

3

Sie haben die gewünschte Ausgabe nicht angegeben.

Dies ist die Art, wie ich dies tun würde:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

set "search= - Perm" 
set "replace=" 

set "textFile=test.txt" 
set "rootDir=." 

for %%j in ("%rootDir%\%textFile%") do (
    for /f "delims=" %%i in ('type "%%~j" ^& break ^> "%%~j"') do (
     set "line=%%i" 
     set "output=" 
     setlocal EnableDelayedExpansion 
     for %%a in (!line:%search%^=%replace%!) do set "output=!output!,%%a" 
     >>"%%~j" echo(!output:~1! 
     endlocal 
    ) 
) 

Ausgang:

096,Parisella,Onorato,030417,05:53 
000,030417,06:44 
127,Thomas,Vincent,030417,06:44 
040,Ram,Gurdial,030417,07:09 
100,Smano,Petros,030417,07:12 
128,Machenbach,Werner,030417,07:13 
147,Samanovic,Milan,030417,07:14 
047,Hopkins,Hugo,030417,07:16 
+0

Dies ist, was ich war nach. Die Ausgabe ist was ich wollte. – James

Verwandte Themen