テキストファイルから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に出力されます。
動作保証等は出せませんので、バックアップを厳重に取って自己責任で実行してください。
お礼
勉強になります!これを読んで理解するまでに少し時間がかかりそうですが、本当に勉強になります!!ありがとうございます!感謝、感謝です!!