2016-11-17 1 views
1

ich dieses Skript hier auf SO gefunden verwendet haben:Split mulitple CSV-Dateien im Batch-

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 
) 

Dies teilt eine Datei in mehrere kleinere Dateien (50 Zeilen à) .Ich möchte erhalten Es um alle Dateien in einem bestimmten/aktuellen Verzeichnis zu teilen.

+1

eine andere 'for' Schleife um den vorhandenen Code Put. – DavidPostill

+0

@DavidPostill Ich verstehe, dass ich das brauche. Aber ich bin unsicher, wie ich es innerhalb des bestehenden Codes erreichen kann. –

+1

für/f "Token = *" %% f in ('dir/b * .csv') mach @echo etwas mit %% f – DavidPostill

Antwort

0

Die endgültigen Code dank @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 
    ) 
)