【バッチファイル】for繰り返しがうまくいかない
バッチファイルの置いてあるフォルダ内(ついでにサブフォルダ内も)の
特定の拡張子(今回は.txt)ファイル全てを対象に
(1)ある行ある列n文字目から2文字を読み込む×2
(2)読み込んだ文字をそのファイル名の先頭に追加
というバッチファイルを作りたいです。
具体例
テキストの中身↓
a.txt
○○○○ ○○○○ ○○○○ ○○○○ ....
○○○○ ○○○○ ○○○○ ○○○○ ....
○○○○ ○○○○ ○○○○ ○○○○ ....
○○○○ ○○○○ ○○○○ ○○○○ ....
○○○○ ○○○○ ○○○○ ○○○○ ....
○○○○ ○○xx ○○yy ○○○○ ....
○○○○ ○○○○ ○○○○ ○○○○ ....
→ファイル名を「xxyya.txt」にしたい
そこで素人ながら下記のようなバッチファイルを作成してみましたが、
フォルダ内にある1つ目のファイルに対してはうまく動くのですが
2つ目以降はリネーム出来ません。
フォルダ内すべての.txtファイルに実行するための
対処法がお分かりになれば、ご教授いただけると幸いです。
「rename.bat」
cd /d %~dp0
rem .txtファイルを列挙
for /f "usebackq tokens=*" %%i in (`dir /s /b *.txt`) do (
set name=%%~xni
rem 特定の行列の文字列を抜き出して変数へ格納
for /f "skip=5 tokens=2,3" %%a in (%%i) do (
set front=%%a
set back=%%b
rem 7行目以降は不要なのでforから離脱
goto break
)
:break
rem 抜き出した文字列からさらに必要な文字を抜き出して変数へ
set hed="%front:~2,2%%back:~2,2%"
rem 元のファイル名へ追記
ren %name% %hed%%name%
)
お礼
なるほど、ありがとうございました。