テキストファイルからヘッダー行を削除するためのバッチファイルまたはコマンドライン

テキストファイルからヘッダー行を削除するためのバッチファイルまたはコマンドライン

10,000 個のテキスト ファイルから最初の 3 行を削除しようとしています。次を使用します。

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

ヘッダーを削除して、フォルダー内のすべてのファイルを 1 つの新しいファイルに連結することはできます。ただし、ヘッダー行を除いてファイルを個別に保持したいのですが、これは可能ですか?

答え1

ソース ファイルを上書きすることはできません。また、重複する可能性があるため、新しい名前を自動生成することもできません。ただし、ヘッダーのないファイルを一時フォルダーに保存し、ソースに移動することはできます。次のようになります。

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

または、コマンド ラインの 1 つのコマンドと同じです。

@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

関連情報