- ベストアンサー
ファイル名の頭3桁が同じフォルダに移動させる
- ファイル名の頭3桁が同じフォルダに移動させる方法を教えてください。
- ファイル名の頭3桁が一致した場合、それぞれのフォルダにファイルを移動するbatファイルを作成したいです。
- 具体的なファイル名とフォルダ名の例を挙げています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
!STR:~,3! を !STR:~,6! に変えれば良いだけだと思いますが・・・。 こちらでテストした限りではうまくいきます。 変数名 Head3 を Head6 に変えなくてもいけますが、変えるならすべて変えてください。(2か所)
その他の回答 (3)
- UY-Scuti
- ベストアンサー率85% (17/20)
setlocal enabledelayedexpansion for %%a in (*.txt *.pdf) do ( set STR= %%a set Head3=!STR:~,3! for /d %%b in (!Head3!*) do ( move "%%a" "%%b\" 2>nul ) )
お礼
ありがとうございます! テスト実行し、3桁の場合はそれぞれのフォルダに入れることができました。 頭から6桁で合わせる場合は、どのように行うのでしょうか。 コマンド内の3を6に変えればいいのかと思い、 変えて実行してみましたが少降順1位のフォルダにすべて移動されてしまいました。 よろければ教えていただけると幸いです。
- q4330
- ベストアンサー率27% (768/2786)
move 123* 123_A move 234* 234_B move 345* 3456
補足
回答ありがとうございます! 私のたとえが不足しておりましたが ファイル名、フォルダ名は必ずしも固定ではありません。。 数百、千近いデータ(txt,pdf)がある感じです。 その一部分のデータを個人フォルダへ移動させ ID(頭6桁:質問は3桁と記載しましたが実際には6桁)を認証して同じIDのフォルダへ移動させることが希望です。 例えば ファイル名 001A01111_(任意のスペースがある文字列)txt 001A01112_(任意のスペースがある文字列)pdf ・ 079501001_(任意のスペースがある文字列)pdf 079501020_(任意のスペースがある文字列)pdf ・ ・ 992Z01001_(任意のスペースがある文字列)pdf フォルダ名 001A01_(任意のスペースがある文字列) ・ 079501__(任意のスペースがある文字列) ・ ・ 992Z01_(任意のスペースがある文字列) バッチ実行後 001A01_(任意のスペースがある文字列)には └001A01111_(任意のスペースがある文字列) └001A01112_(任意のスペースがある文字列) 079501__(任意のスペースがある文字列) └079501001_(任意のスペースがある文字列) └079501020_(任意のスペースがある文字列) 992Z01_(任意のスペースがある文字列) └992Z01001_(任意のスペースがある文字列)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
"*"(アスタリスクが、ワイルドカード) ですので、 MOVEコマンド(ファイルの移動) にて、 123*.* 234*.* 345*.* をフィルタとして移動先 123_A 234_B 3456 への移動をすればOKです。 MOVEコマンドの説明は https://www.javadrive.jp/command/file/index7.html こんな感じで。 なお、 123*.* *.* と2回使っておりますが、 例えば *.txt *.pdf とファイル名ワイルドカード+拡張子という分け方もできます。 この辺は使い分けて、一番良い方法を使えばよいでしょう!。
補足
回答ありがとうございます! 私のたとえが不足しておりましたが ファイル名、フォルダ名は必ずしも固定ではありません。。 数百、千近いデータ(txt,pdf)がある感じです。 その一部分のデータを個人フォルダへ移動させ ID(頭6桁の数字:質問は3桁と記載しましたが実際には6桁)を認証して同じIDのフォルダへ移動させることが希望です。 例えば ファイル名 001A01111_(任意のスペースがある文字列)txt 001A01112_(任意のスペースがある文字列)pdf ・ 079501001_(任意のスペースがある文字列)pdf 079501020_(任意のスペースがある文字列)pdf ・ ・ 992Z01001_(任意のスペースがある文字列)pdf フォルダ名 001A01_(任意のスペースがある文字列) ・ 079501__(任意のスペースがある文字列) ・ ・ 992Z01_(任意のスペースがある文字列) バッチ実行後 001A01_(任意のスペースがある文字列)には └001A01111_(任意のスペースがある文字列) └001A01112_(任意のスペースがある文字列) 079501__(任意のスペースがある文字列) └079501001_(任意のスペースがある文字列) └079501020_(任意のスペースがある文字列) 992Z01_(任意のスペースがある文字列) └992Z01001_(任意のスペースがある文字列)
お礼
ご返信ありがとうございます! 最終的に!STR:~,8!に変えたら希望通りに実行できました! 恐らく数字だけではなく英数字のため (!STR:~,6!)では上手くできなかったのかもしれません、、 ※文字のバイトなのでしょうか?! 5~10を一通りためして8桁がジャストでした。 いずれにしてもコードを作成してくださり、ヒントを与えてくださり、とても感謝しております。 この度はありがとうございました!