2014-11-11 1 views
1

하나의 폴더에 csv 파일이 수백 개 있습니다. 마지막 열 8 개를 삭제하려는 9 개의 열이 있습니다. 모든 파일.배치 파일을 사용하여 폴더에있는 모든 CSV 파일의 첫 번째 열과 첫 번째 행을 제외한 모든 열을 삭제합니다.

파일은 내가 편집 된 동일한 파일을 덮어 쓸 수 있는지 확실하지 오전이 enter image description here

것 같습니다. 현재로서는 그것이 가능하다고 생각하고 있습니다. 그리고 덮어 쓰기를 할 수없는 경우, 다음은 같은 파일 이름으로 저장해야합니다은

감사 어떤 도움을 제안하십시오 다른 디렉토리에있을 수 있습니다.

+0

당신이 배치 파일을 사용해야합니까? 일괄 처리를 통해 가능합니다 (http://stackoverflow.com/questions/8520313/dos-batch-script-to-parse-csv-file-and-output-a-text-file 참조). 다른 언어. – Kevin

+0

왜? 쉼표 구분 기호를 사용하여 구문 분석해야하는 CSV 일뿐입니다. 배치 용'for' 루프입니다. – SomethingDark

+0

예 배치 파일이 필요합니다. 나는이 프로세스의 일부인 배치 파일에 하나의 전체 프로세스를 가지고 있습니다. – Penny

답변

1

이 코드는 배치 파일을 csv 파일과 동일한 디렉토리에 저장했다고 가정합니다.

@echo off 

for /f %%A in ('dir /b *.csv') do (
    for /f "skip=1 tokens=1,2* delims=," %%B in (%%A) do (
     echo %%B>>newdata.csv 
    ) 
    copy /y newdata.csv %%A 
    del newdata.csv 
) 

그리고이 코드는 스크립트의 위치, 소스 CSV 파일 또는 대상 폴더에 대한 어떠한 가정도하지 않습니다 :

@echo off 

set source_folder=C:\path\to\your\csv\files 
set target_folder=C:\path\to\your\output\folder 

if not exist %target_folder% mkdir %target_folder% 

for /f %%A in ('dir /b %source_folder%\*.csv') do (
    for /f "skip=1 tokens=1,2* delims=," %%B in (%source_folder%\%%A) do (
    echo %%B>>%target_folder%\%%A 
    ) 
) 
+0

내 배치 파일이 다른 디렉토리에 있으면 코드를 어떻게 보이게 할 것인지 제안 할 수 있습니다. – Penny

+0

첫 번째 루프에서는 \ (\ dir \ b "C : \ where \ your \ files \ are \ *. csv" ')'부분에 괄호 안의 부분을 변경하면된다. 따옴표는 경로 나 파일 이름에 공백이있을 경우에만 필요하다. – SomethingDark

+0

그리고 기존 파일을 덮어 쓰지 않으면 어떻게 수정 된 모든 파일을 다른 디렉토리에 저장합니까? 이 경우 코드는 무엇입니까? – Penny

관련 문제