2017-06-09 6 views
0

フォルダ(およびサブフォルダ)内の各.csvファイルのヘッダー行を更新するバッチスクリプトを作成しようとしています。 ソースファイルを実際に変更したくないので、新しいヘッダー、同じ内容、新しい拡張子の.csv.modifiedを使用して新しいファイルを作成します。バッチ - サブフォルダ内の各CSVファイルを変更する

.csvファイルが1つだけの場合/ sを削除します)。ただし、> 1の場合、他のファイルの内容は無視してください。

注:私は多くのサブフォルダを持ち、その中には空白が含まれています。

@echo off 
cls 

setlocal enabledelayedexpansion 
set HEADERS=header1,header2 

for /f "delims=" %%i in ('dir /b /s *.csv') do (
    set filename=%%~i 
    echo !filename! 
    echo. 

    set cpt=1 
    set new_filename=!filename!.modified 

    @copy nul "!new_filename!" 
    echo creating !new_filename! 
    echo %HEADERS%>"!new_filename!" 

    for /f %%a in (%%~i) do (
     set line=%%a 
     if !cpt! gtr 2 ( 
      echo Y 
      echo !line!>>"!new_filename!" 
     ) else ( 
      echo N 
     ) 

     echo !cpt! %%a 
     set /a cpt=!cpt!+1 
    ) 

) 

endlocal 

答えて

0

これは、あなたがそれを達成するために必要なすべてでなければなりません:単に完璧

@SET "HEADERS=header1,header2" 
@FOR /F "DELIMS=" %%A IN ('DIR/B/S/A-D-S-L *.csv') DO @((ECHO %HEADERS% 
    MORE +1 "%%~A")>"%%~A.modified") 
+0

。ありがとうたくさんのコンポ –

関連する問題