質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

3466閲覧

テキストファイル内に記述のある拡張子を含むファイルの振り分け方法

ya0501

総合スコア27

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2018/02/06 09:49

ディレクトリ内にある複数のファイルを条件別に他ディレクトリに移動させる
バッチファイルを作成しております。

分岐条件として、あるテキストファイル内に拡張子の一覧が羅列されており、
その一覧の中に該当する拡張子を持っているファイルであればAフォルダへ、
該当しなければBフォルダへ移動させたいと考えております。

例>

sample.txtの内容
.xls
.pdf
.doc
.txt
...
..
.
.

C:\Users\Desktop\フォルダ1\test.txt
C:\Users\Desktop\フォルダ1\test.bat

   ↓ テキストファイルに.txtの記述はあるのでフォルダAへ
↓ テキストファイルに.batの記述はないのでフォルダBへ

C:\Users\Desktop\フォルダA\test.txt
C:\Users\Desktop\フォルダB\test.bat

フォルダ1に含まれるファイルが大量にあり、拡張子も様々ですので、
拡張子別に振り分けが出来るバッチにしたいです。

良い記述方法はございますでしょうか。

お知恵をお貸し頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

1ファイル毎にsample.txtを読むので時間は掛かりますが、簡単さを取るということで。

DOS

1pushd C:\Users\Desktop\フォルダ1 2for %%F in (*) do ( 3 findstr /r "^\%%~xF$" \path\to\sample.txt >NUL 4 if errorlevel 1 ( 5 move "%%F" C:\Users\Desktop\フォルダB 6 ) else ( 7 move "%%F" C:\Users\Desktop\フォルダA 8 ) 9) 10popd

投稿2018/02/06 12:06

編集2018/02/06 12:07
otn

総合スコア84491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんな感じでできます。

dos

1@echo off 2setlocal 3 4set TARGET_DIR=sample 5set EXT_LIST=sample.txt 6set FOLDER_A=FolderA 7set FOLDER_B=FolderB 8 9rem リストに書かれている拡張子に該当するファイルをフォルダーAに移動 10for /F %%A in (%EXT_LIST%) do ( 11 move %TARGET_DIR%*%%A %FOLDER_A%\ 12) 13 14rem それ以外のファイルをフォルダーBに移動 15move %TARGET_DIR%*.* %FOLDER_B%\

一応軽くテストして動くことは確認しました。環境変数への設定は適宜変えてください。

投稿2018/02/06 11:53

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問