2016-11-17 34 views
1

我已经使用这个脚本在这里发现SO:分割多张的CSV文件

Batch file to split .csv file

@echo off 
setLocal EnableDelayedExpansion 

set limit=50 
set file=export.csv 
set lineCounter=1 
set filenameCounter=1 

set name= 
set extension= 
for %%a in (%file%) do (
    set "name=%%~na" 
    set "extension=%%~xa" 
) 

for /f "tokens=*" %%a in (%file%) do (
    set splitFile=!name!-part!filenameCounter!!extension! 
    if !lineCounter! gtr !limit! (
     set /a filenameCounter=!filenameCounter! + 1 
     set lineCounter=1 
     echo Created !splitFile!. 
    ) 
    echo %%a>> !splitFile! 

    set /a lineCounter=!lineCounter! + 1 
) 

此拆分一个文件分成几个小文件(50行,每行)。我想获得它分割特定/当前目录中的所有文件。

+1

换个'for'环周围现有的代码。 – DavidPostill

+0

@DavidPostill我明白那是我需要的。但我不确定如何在现有的代码中完成它。 –

+1

for/f“tokens = *”%% f in('dir/b * .csv')do @echo用%% f做些什么 – DavidPostill

回答

0

最终代码感谢@DavidPostill

@echo off 
setLocal EnableDelayedExpansion 
for /f "tokens=*" %%f in ('dir /b *.csv') do (

    set limit=100 
    set lineCounter=1 
    set filenameCounter=1 

    set name= 
    set extension= 
    for %%a in (%%f) do (
     set "name=%%~na" 
     set "extension=%%~xa" 
    ) 

    for /f "tokens=*" %%a in (%%f) do (
     set splitFile=!name!-part!filenameCounter!!extension!" 
     if !lineCounter! gtr !limit! (
      set /a filenameCounter=!filenameCounter! + 1 
      set lineCounter=1 
      echo Created !splitFile!. 
     ) 
     echo %%a>> !splitFile! 

     set /a lineCounter=!lineCounter! + 1 
    ) 
)