アプリ版:「スタンプのみでお礼する」機能のリリースについて

コマンドプロンプトについてお教え願えまえせんでしょうか?

■同一フォルダ内にあるテキストファイルの1行目のみを全て削除したい。
1000テキストファイルがあります。全てのファイルの先頭行(1行目)を削除したいです。

■上記のファイルが複数のサブフォルダ内に散らばっているとします。
フォルダAの中にあるサブフォルダを含めた全てのファイルに対し、同じように先頭行を削除したい。

上記の2点をおこないたいと思います。1ファイルづつ先頭行を消していくのは大変な作業なので一発でできればと思っています。

よろしくお願い致します。

A 回答 (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に出力されます。

動作保証等は出せませんので、バックアップを厳重に取って自己責任で実行してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/04 12:55

コマンドプロンプトではなく、バッチファイルや正規表現とマクロの話ではないかと。


一行目と言うと、ファイルの先頭から最初に改行コードがくるまでの文字列を削除となるので、grepや文字列置換が行えるテキスとエディタのマクロで出来そうですが…
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/04 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A