
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