みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【バッチファイル】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%
)

投稿日時 - 2018-12-16 15:27:29

QNo.9568293

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

rem ループ内で変数を変化させるためのもの
setlocal enabledelayedexpansion

処理のはじめにこれを入れてください。

投稿日時 - 2018-12-16 15:46:47

お礼

回答ありがとうございます。
残念ながらこちらの回答では解決しませんでしたが、別途解決できました。

投稿日時 - 2018-12-17 00:21:52

あなたにオススメの質問