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

问题描述 投票:0回答:1

我尝试制作一个批处理脚本,用于更新文件夹(和子文件夹)中每个.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 
csv batch-file recursion header
1个回答
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")
© www.soinside.com 2019 - 2024. All rights reserved.