2007年06月12日

FOR 繰り返し処理(3) ファイル名 再帰検索

今回は"/R"のオプションを使用して、ファイル名をサブフォルダも含め検索するbatを作ってみましょう。

※下準備として、適当なワークフォルダを作成してください。
tree.bmptest_dir.bmp

左)フォルダ構成
右)配下ファイル

ちょっと見辛いですが、今回はこんな感じで作成しました。

STEP1 FOR_3_1.bat
c:\test配下のファイルを全て表示させてみる。
@echo off

for /r c:\test %%a in (*) do echo %%a
1."c:\test"はフォルダ指定なのでなくても大丈夫です。
 その場合はコマンドプロンプトで実行する際"CD"コマンドを使用し
 カレントディレクトリを移動してから実行して下さい。

STEP2 FOR_3_2.bat
ファイル名を指定しそのファイル名のみを表示させる
@echo off

rem ファイル名検索再帰処理
:SEC00000
for /r c:\test %%a in (*) do (set filename=%%a) && (call :SEC00100)
goto SECEXIT

rem ファイル名表示処理
:SEC00100
if %filename%==c:\test\first.txt (echo %filename%) & (goto :eof)

rem 変数開放
:SECEXIT
set filename=

STEP3 FOR_3_3.bat
"引き数1"にファイル名を入力し"引き数2"に別のファイル名を入力しリネームをかける。
@echo off

rem 変数設定
:SEC00000
set first=%1
set second=%2

rem ファイル名検索再帰処理
:SEC00100
for /r c:\test %%a in (*) do ((set fullpath=%%a) & (set filename=%%~xna))&& (call :SEC00200)
goto SECEXIT

rem ファイル名存在確認
:SEC00200
if %filename%==%first% goto SEC00300
goto :eof

rem リネーム処理
:SEC00300
ren %fullpath% %second%
goto :eof

rem 変数開放
:SECEXIT
set filename=
set first=
set second=
1.コマンドプロンプトを開き以下のように実行して下さい。
 [ドライブ][パス]FOR3-3.bat first.txt 1-1.txt
 ※バッチ名と引き数1,2の間に"スペース"を入れるの忘れないで!
2.「%%~xna」は、フルパスで変数に格納されていた物を "ファイル名"のみにする
 "オプション構文"です。

出来ましたか?
リネームが終わった後に先ほど作成した、FOR1-1.batを実行すると
一番上にあった"first.txt"が"1-1.txt"に変化しているのが分かります。


posted by 管理人 at 01:27| Comment(2) | TrackBack(0) | A〜H | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして!みっちゃんです。   見ました!ブログ。あみちゃんはEXPGに行ってるということで・・・私の友達も行ってるんだけど楽しいって言ってましたよ〜!EXILEさんのダンスってかっこいいな〜   突然ですが質問です。           ・タメ口ってOKですか?  ・EXILEで誰押しですか?                            応援してます!!
Posted by 指原莉乃 ブログ at 2013年06月13日 15:57
FOR 繰り返し処理(3) ファイル名 再帰検索: VBS & バッチファイル
Posted by ティファニー 食器 at 2013年07月21日 12:43
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。