• ベストアンサー

ファイルの先頭行を全て削除したい

コマンドプロンプトについてお教え願えまえせんでしょうか? ■同一フォルダ内にあるテキストファイルの1行目のみを全て削除したい。 1000テキストファイルがあります。全てのファイルの先頭行(1行目)を削除したいです。 ■上記のファイルが複数のサブフォルダ内に散らばっているとします。 フォルダAの中にあるサブフォルダを含めた全てのファイルに対し、同じように先頭行を削除したい。 上記の2点をおこないたいと思います。1ファイルづつ先頭行を消していくのは大変な作業なので一発でできればと思っています。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

テキストファイルから1行目を除く(2行目からを出力する)方法 For /F "usebackq skip=1 tokens=*" %i In ( `Type hoge.txt` ) Do Echo %i 全ての.txtファイルに対して実行する方法 For /F "usebackq tokens=*" %i In ( `Dir /B *.txt` ) Do Echo %i サブフォルダを含めて全ての.txtファイルに対して実行する方法 For /F "usebackq tokens=*" %i In ( `Dir /B /S *.txt` ) Do Echo %i というのをまとめて、バッチファイルにしたりパスやらの補正を入れると @Echo Off Set DIRPATH=.\ Set DIROPT=/B /S Set OVERSTRIKE=NO For /F "usebackq tokens=*" %%i In ( `Dir %DIROPT% "%DIRPATH%*.txt"` ) Do Call :Cut1 "%%~i" Echo 全てのファイルの変換が終了しました。 Echo. Echo 何かキーを押すとウィンドウを終了します。 Echo. Echo [END] Pause>NUL Exit /B 0 :Cut1 Set CUTFILE=%~1 Echo [%CUTFILE%]ファイルの先頭1行をカットし、 Echo [%CUTFILE%.Cut1.txt]に出力します。 Echo [%DATE% %TIME%] 変換対象ファイル[%~nx1] 変換対象ファイルフルパス[%~1]>>Cut1.Log For /F "usebackq skip=1 tokens=*" %%i In ( `Type "%CUTFILE%"` ) Do Echo %%i>>"%CUTFILE%.Cut1.txt" If %OVERSTRIKE%==YES ( Echo. Echo [%CUTFILE:)=^^^)%.Cut1.txt]ファイルを Echo [%CUTFILE:)=^^^)%]に上書きします。 Move /Y "%CUTFILE%.Cut1.txt" "%CUTFILE%" ) Echo. Exit /B こんな感じになります。 @Echo Off~Exit /B をコピーして適当なバッチファイル名( Cut1.bat とか )をつけ、 「変換したいファイルのあるディレクトリ」か「サブフォルダのあるディレクトリ」に置いて実行してください。 変換を行ったファイルについてはCut1.Logに出力されます。 Set DIRPATH=.\ ここを対象とするパスに変更すれば、バッチファイルは何処に置いても大丈夫です。 最後の\マークを忘れずに。 Set DIROPT=/B /S このままだとサブフォルダを辿って変換を掛けます。 サブフォルダを対象としない場合、Set DIROPT=/B にしてください。 尚、サブフォルダを辿る設定の場合、対象ファイル数が多いと開始に時間が掛かります。 Set OVERSTRIKE=NO 1行目を削除した内容で元ファイルを上書きするかどうかの設定です。 YESにすると上書き、NOにすると元ファイル名.Cut1.txtに出力されます。 動作保証等は出せませんので、バックアップを厳重に取って自己責任で実行してください。

mellow91
質問者

お礼

勉強になります!これを読んで理解するまでに少し時間がかかりそうですが、本当に勉強になります!!ありがとうございます!感謝、感謝です!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#198951
noname#198951
回答No.1

コマンドプロンプトではなく、バッチファイルや正規表現とマクロの話ではないかと。 一行目と言うと、ファイルの先頭から最初に改行コードがくるまでの文字列を削除となるので、grepや文字列置換が行えるテキスとエディタのマクロで出来そうですが…

mellow91
質問者

お礼

ご回答ありがとうございます!!

すると、全ての回答が全文表示されます。

関連するQ&A