Bagaimana cara memindahkan setiap file di pohon ke akar pohon?


10

Saya memiliki folder (sebut saja A) dengan banyak subfolder B, C, D, E, yang kemudian memiliki subfolder B1, B2, B3, ... C1, C2, C3 ...

Bagaimana saya bisa menggunakan cmd memindahkan semua file dari semua subfolder ke folder "root" A?


Saya berasumsi Anda ingin setiap file di satu root, bukan di subfolder? Jadi A \ File1, A \ File2, bukan A \ Folder2 \ File1?
Luke Kanada

@ Lukas - Ya, Anda mengerti. Setiap file yang ada di folder dan subfolder dipindahkan ke root.
Benteng

Jawaban:


12

Posting asli saya lalai untuk menyertakan ekstensi file dalam perintah pindah. %~nihanya mengembalikan nama, Anda harus menggunakan %~nxiuntuk mendapatkan nama file dan ekstensi! Saya harap Anda belum mengubah nama file Anda di akun saya! (

Dari Command Prompt:

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

Jika Anda perlu membersihkan folder kosong sesudahnya:

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

Sekarang, jika Anda memiliki bentrokan nama file, Anda harus melakukannya sendiri. Anda dapat menambahkan /yparameter ke moveperintah (sebelum "%i") untuk memaksa overwrites. Jika Anda menginginkan sesuatu yang berbeda, Anda akan memerlukan program lain yang dapat secara otomatis mengubah nama segalanya untuk Anda.

Juga, jika Anda ingin menggunakan ini dalam file batch, ubah semua %ke %%.


Tidak tahu FOR /r- bagus!
Daniel Beck

Wow, sangat luar biasa. Saya tunduk pada perintah-fu Anda.
Mokubai

2

Buat folder dan salin semua folder lain ke dalamnya, lalu klik kanan folder itu dan pilih Cari . Di kotak pencarian, masukkan *.*.

Ini akan mencantumkan semua file dan folder. Pilih semua file yang Anda inginkan di direktori root Anda dan potong. Arahkan ke direktori root Anda dan rekatkan semua file di sana.


pencarian tidak ada sebagai perintah di cmd saya.
Benteng

Richard tidak berbicara tentang perintah. Telah mengedit jawabannya untuk membuatnya lebih jelas.
Isaac Rabinovitch

0

Instal Cygwin (atau lingkungan Unix lain untuk Windows) dan jalankan yang berikut:

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

Bergantung pada varian mvdan findAnda, Anda mungkin perlu menggunakannya find . -type f -exec mv -t . {} \;.
Daniel Beck

1
Untuk port Windows asli dari banyak alat Unix, saya suka unxutils.sourceforge.net
Dennis

@ Dennis UnxUtils bagus, sayangnya sudah cukup tua sekarang. Jika Anda menggunakannya saat ini, dapatkah Anda memverifikasi postingan saya berfungsi dengan mereka? mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cdan touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccuntuk persiapan.
Daniel Beck

-1 Itu mungkin benar, tetapi saya bertanya tentang bagaimana melakukannya dalam cmd.
Benteng

@ Danielel Tidak diragukan lagi mereka sudah tua, saya telah menyeret mereka selama bertahun-tahun. Saya baru saja mencoba find . -type f -exec mv {} . ;Dan sepertinya berhasil ok.
Dennis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.