ツリー内のすべてのファイルをツリーのルートに移動するにはどうすればよいですか?


10

私はたくさんのサブフォルダーB、C、D、Eを持つフォルダー(これをAと呼びます)を持っています。このフォルダーには、サブフォルダーB1、B2、B3、...、C1、C2、C3 ...があります。

cmdを使用して、すべてのファイルをすべてのサブフォルダーから「ルート」フォルダーAに移動するにはどうすればよいですか?


サブフォルダーではなく、1つのルートにすべてのファイルが必要だと思いますか?A \ Folder2 \ File1ではなく、A \ File1、A \ File2?
カナダのルーク、

@ルーク-はい、あなたはそれを手に入れました。フォルダーとサブフォルダーに存在するすべてのファイルがルートに移動しました。
2010年

回答:


12

私の元の投稿では、移動コマンドにファイルの拡張子を含めることを怠っていました。 %~niベース名のみを返します%~nxi。ファイル名と拡張子の両方を取得するために使用する必要があります!私のアカウントでファイル名を壊していないことを願っています!(

コマンドプロンプトから:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

後で空のフォルダーをクリーンアップする必要がある場合:

for /d %i in (*) do @rd /s /q "%i"

これで、ファイル名の衝突があれば、自分で解決できます。コマンドに(の前に)/yパラメータを追加して、強制的に上書きすることができます。別のものが必要な場合は、すべてを自動的に名前変更できる別のプログラムが必要です。move"%i"

また、これをバッチファイルで使用する場合は、すべてをに変更%%%ます。


知らなかったFOR /r-いいね!
ダニエルベック

うわー、すごい。私はあなたのコマンドフに頭を下げます。
Mokubai

2

フォルダを作成し、他のすべてのフォルダをその中にコピーしてから、そのフォルダを右クリックして[ 検索 ]を選択します。検索ボックスにと入力し*.*ます。

これにより、すべてのファイルとフォルダが一覧表示されます。ルートディレクトリで必要なすべてのファイルを選択し、それらを切り取ります。ルートディレクトリに移動し、そこにすべてのファイルを貼り付けます。


検索は私のcmdにコマンドとして存在しません。
ルーク

リチャードはコマンドについて話していませんでした。彼の答えを明確にするために編集しました。
アイザック・ラビノビッチ

0

Cygwin(またはWindows用の別のUnix環境)をインストールして、以下を実行します。

cd A
find . -type f -exec mv {} . \;

mvおよびfindバリアントによっては、find . -type f -exec mv -t . {} \;代わりに使用する必要がある場合があります。
Daniel Beck

1
多くのUnixツールのネイティブWindowsポートについて、私はunxutils.sourceforge.net
Dennis

@Dennis UnxUtilsは素晴らしいですが、残念ながら今ではかなり古くなっています。現時点でそれらを使用している場合、私の投稿がそれらで機能することを確認できますか?mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cそしてtouch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccc準備のため。
ダニエルベック

-1それは本当かもしれませんが、私はcmdでそれを行う方法について尋ねていました。
2010年

@ダニエル間違いなく彼らが古いので、私は何年も彼らを引きずっています。試しfind . -type f -exec mv {} . ;てみたところ 、問題なく動作したようです。
Dennis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.