お世話になっております。
タイトルの事で質問させてください。
Windows10で
下記の様に同名のサブフォルダにあるファイルを上位に持ってきたいです。
D:\>tree /f test D:\TEST │ ├─iOS Note │ └─iOS Note │ └─iOS Note │ └─iOS Note │ ├─2 │ │ image-0001.jpg │ │ │ └─1 │ image-0002.jpg │ └─Android Note └─Android Note └─Android Note └─Android Note └─Android Note image-0003.jpg
こんな感じ
D:\>tree /f test D:\TEST │ ├─iOS Note ├─2 │ image-0003.jpg │ └─1 image-0002.jpg │ └─Android Note image-0003.jpg
これをやるに当たって、バッチファイルで取る様にしようと考えました。
- 最下層のフォルダパスを取ってきて変数に入れる
- 番号リスト変数内で重複しているフォルダがあれば削除して宛先にする
- moveで移動させる
みたいな感じで考えていました。
とりあえずフォルダのパスを取って来ることを考えました。
dir / b /s /ad d:\test\
でパスは取れました。
こんな感じになりました。
D:\>dir / b /s /ad d:\test\ d:\test\iOS Note d:\test\Android Note d:\test\iOS Note\iOS Note d:\test\iOS Note\iOS Note\iOS Note d:\test\iOS Note\iOS Note\iOS Note\iOS Note d:\test\iOS Note\iOS Note\iOS Note\iOS Note\2 d:\test\iOS Note\iOS Note\iOS Note\iOS Note\1 d:\test\Android Note\Android Note d:\test\Android Note\Android Note\Android Note d:\test\Android Note\Android Note\Android Note\Android Note d:\test\Android Note\Android Note\Android Note\Android Note\Android Note
全てのフォルダが取れました。
色々オプションも変えてみましたが無理でした。
仕方がないので
dir / b /s /ad d:\test\ > folder_path.csv
で全パスを取って手動で加工してmove [送り元] [宛先]
にすることにしました。
結果は、
Android Note はまぁ上手くいきました。空のフォルダが残りましたがこれは別のコマンドで消せます。
問題はKeikaku iSO Notesです。
いくらやっても構文エラーになります。
D:\>move "D:\test\iOS Note\iOS Note\iOS Note\iOS Note*" "D:\test\iOS Note" ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 D:\>move "D:\test\iOS Note\iOS Note\iOS Note\iOS Note\" "D:\test\iOS Note" 指定されたファイルが見つかりません。
調べてみたところ、moveコマンドのフォルダの移動については既存フォルダが無い場合はエラーになるそうです。
万策つきました。
方法が無いかネット調べてみましたが、1階層下のファイルを引き上げる方法はありますが、最下層フォルダのファイルを引き上げる事を
やっている人はいませんでした。
バッチファイルじゃなくてもRubyでもPythonでもJavaでもPowerShellでも構いません。
解説サイトおよび方法をご存じの方はご教授の程よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー