batch - 修改子文件夹中的每个csv文件

时间:2017-06-09 16:59:33

标签: csv batch-file recursion header

我尝试制作一个批处理脚本,用于更新文件夹(和子文件夹)中每个.csv文件的标题行。 由于我不想真正修改源文件,因此我使用新标题,相同内容和新扩展名创建新文件" .csv.modified"

当我只有一个.csv(我只删除/ 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 

1 个答案:

答案 0 :(得分: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")