텍스트 파일에서 헤더 줄을 제거하기 위한 배치 파일 또는 명령줄

텍스트 파일에서 헤더 줄을 제거하기 위한 배치 파일 또는 명령줄

10,000개의 텍스트 파일에서 처음 3줄을 제거하려고 합니다. 사용:

for %f in (*.txt) do more +3 “%f” >> output.txt

헤더를 제거하고 폴더의 모든 파일을 하나의 새 파일로 연결할 수 있습니다. 그러나 헤더 줄 없이 파일을 별도로 유지하고 싶습니다. 이것이 가능한가?

답변1

소스 파일을 덮어쓸 수 없습니다. 그리고 중복 가능성 때문에 새 이름을 자동 생성할 수 없습니다. 하지만 헤더 없이 파일을 임시 폴더에 저장한 다음 소스로 이동할 수 있습니다. 다음과 같습니다.

@echo off
for %%f in (*.txt) do (
    more +3 "%%f" > "%TEMP%\%%f"
    move /y "%TEMP%\%%f" "%%f" > nul
)
echo Done.

또는 명령줄의 한 명령과 동일합니다.

@for %f in (*.txt) do @(more +3 "%f" > "%TEMP%\%f" && move /y "%TEMP%\%f" "%f" > nul)

답변2

환경이 가능하다면 임시 파일과 폴더를 사용할 필요가 없도록 Powershell을 사용하는 것이 좋습니다.

Foreach ($file in Get-ChildItem -Path ".\" -Filter *.txt ) {
    $content = Get-Content $file.FullName | Select-Object -Skip 3;
    Set-Content -Path $file.FullName -Value $content;
}

답변3

다른 디렉토리에 별도의 파일을 만드십시오.

md sub
for %f in (*.txt) do more +3 “%f” > sub\%f

관련 정보