2017-05-04 4 views
0

私たちが使用するHRソフトウェアでは、CSVファイルをインポートできますが、サードパーティから取得したダンプはCSV形式ではありません。複数のコンマのカンマを1つのコンマで置き換えます

CSVファイルに処理するためにバッチファイルを書きましたが、ダンプファイルの1つの部分に複数のスペースがあります(行ごとに異なる場合があります)ので、スペースをコンマで置き換えると、複数のコンマで終わる

2つ以上のカンマが1つのカンマに変更されるようにバッチファイルを更新するにはどうすればよいですか?

オリジナルファイル:

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 

私の現在のバッチファイル:

@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 

電流出力:

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 

私は任意のサードパーティ製のツールを使用することはできませんのでご注意ください。

答えて

3

出力を指定していません。

これは私がこれを行うような方法である:

@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 
    ) 
) 

出力:

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

これは私が後だったものです。出力は私が望んだものです。 – James

関連する問題