プロが教える店舗&オフィスのセキュリティ対策術

バッチ処理で伺いたいことがあります。

aaa_001
aaa_002
aaa_003
bbb_001
ccc_001
.
.
.

と複数あるファイルを
namelist.txtにあるリストから取得し
自動でフォルダ作成、移動までをやりたいと思ってい、
下記のバッチ処理でできるかなと試してみました。

@echo off
pushd %~dp0
for /f %%i in (namelist.txt) do mkdir %%i
for /f %%j in (namelist.txt) do move "*%%j*" %%j
exit

しかし、これだと
aaa_011やaaa_111があった場合、
全てaaa_001に入ってしまいます。

この現象を防ぐためにはどのような手段をとればよろしいでしょうか。
ご教授お願い致します。

できればnamelist.txtでリストも作らずにフォルダ作成&移動もできれば一番いいのですが、
それは難しいでしょうか。

質問者からの補足コメント

  • うーん・・・

    ご指摘ありがとうございます。

    例えばファイルの種類が
    aaa_1_01
    aaa_1_02
    aaa_1_03
    aaa_11_01
    aaa_11_02
    aaa_11_03
    があったとし、
    namelist.txtに
    aaa_1
    aaa_11
    の2つのフォルダ名を記載して実行をすると、
    ファイルは全て
    aaa_1のフォルダに入ってしまうということです。

    分かりにくく申し訳ございません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/11/02 13:53

A 回答 (3件)

aaa_1 のフォルダに aaa_1_* のファイルだけ


aaa_11 のフォルダに aaa_11_* のファイルだけ
を移動するなら
move "*%%j*" %%j

move "*%%j_*" %%j
    • good
    • 2

現在のやり方では数値に先行"0(ゼロ)"を付けて数値の"桁数"を揃えなければ上手くいかないようですね。



旧ファイル名  新ファイル名
aaa_1_01    aaa_01_01
aaa_1_02    aaa_01_02
aaa_1_03    aaa_01_03
aaa_11_01   aaa_11_01
aaa_11_02   aaa_11_02
aaa_11_03   aaa_11_03

一番右側の2桁には先行"0"が付いているのですから、できなくはないように思われるのですが如何でしょう。
又はnamelist.txtファイルの中のリスト順番を変更すれば対応できできそうに思われます。

旧    新namelist.txt
aaa_1   aaa_11
aaa_11  aaa_1

つまり"1"と"11"の数値のみに注目し、大きい方を先に並べることができたらどうでしょうか。
    • good
    • 0

ご質問に誤りはないでしょうか。


ご提示のディレクトリ自動作成と、ファイルの自動振り分けはwebで探すと沢山出てきます。namelist.txtファイルに...

aaa
bbb
ccc
...

等と入れておくと..."aaa"/"bbb"/"ccc"...ディレクトリが自動的に作成され、aaa_001.jpg, aaa_002.jpg, ...ファイルはディレクトリ"aaa"に、bbb_001.jpg, bbb_002.jpg,...ファイルは"bbb"ディレクトリに移動します。
ご質問にある「aaa_011やaaa_111があった場合」とは、aaa_011.jpg 及び aaa_111.jpgファイルを意味するのだと思いますが、「aaa_001に入ってしまい...」とは"aaa_001"ディレクトリが存在していることを意味しているのでしょうか。
namelist.txtファイルの設定値を明確にしていただくことが必要なのではないかと思うのですが。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A