Bir ağaçtaki her dosyayı ağacın köküne nasıl taşırım?


10

Daha sonra tekrar B1, B2, B3, ... C1, C2, C3 ...

Cmd'yi kullanarak tüm alt klasörlerden tüm dosyaları "kök" A klasörüne nasıl taşıyabilirim?


Alt klasörlerde değil, her dosyanın bir kökte olmasını istediğinizi varsayıyorum? Yani A \ Dosya1, A \ Dosya2, A \ Klasör2 \ Dosya1 değil mi?
Kanadalı Luke

@Luke - Evet, anladın. Klasörlerde ve alt klasörlerde bulunan her dosya kök dizinine taşındı.
Kale

Yanıtlar:


12

Orijinal yazım, dosyanın uzantısını taşıma komutuna dahil etmeyi ihmal etti. %~nisadece taban adını döndürür, %~nxihem dosya adını hem de uzantıyı almak için kullanmanız gerekir ! Umarım dosya adlarını hesabımda yönetmedin! (

Bir Komut İsteminden:

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

Daha sonra boş klasörleri temizlemeniz gerekiyorsa:

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

Şimdi, herhangi bir dosya adı çakışması varsa, tek başınasınız. Ekleyebilir /yparametresini move(önce komuta "%i"kuvvet üzerine yazma için). Farklı bir şey istiyorsanız, sizin için her şeyi otomatik olarak yeniden adlandırabilecek başka bir programa ihtiyacınız olacak.

Eğer bir toplu iş dosyasında bu kullanmak istiyorsanız Ayrıca, tüm değiştirmek %için %%.


Bilmiyordum FOR /r- güzel!
Daniel Beck

Vay canına, çok harika. Senin emrine boyun eğiyorum.
Mokubai

2

Bir klasör oluşturun ve içine diğer tüm klasörleri kopyalamak, daha sonra sağ o klasörü tıklayın ve Ara . Arama kutusuna girin *.*.

Bu, tüm dosya ve klasörleri listeleyecektir. Kök dizininizde istediğiniz tüm dosyaları seçin ve kesin. Kök dizininize gidin ve tüm dosyaları buraya yapıştırın.


cmd'de arama bir komut olarak mevcut değil.
Kale

Richard aa komutundan bahsetmiyordu. Daha açık hale getirmek için cevabını düzenlediniz.
Isaac Rabinovitch

0

Cygwin'i (veya Windows için başka bir Unix ortamını) kurun ve aşağıdakileri çalıştırın:

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

Kendinize mvve findvaryantlarınıza bağlı olarak find . -type f -exec mv -t . {} \;bunun yerine kullanmanız gerekebilir .
Daniel Beck

1
Birçok Unix aracının yerel Windows bağlantı noktaları için unxutils.sourceforge.net
Dennis

@Dennis UnxUtils güzel, maalesef oldukça eski. Şu anda kullanıyorsanız, yayınımın onlarla çalıştığını doğrulayabilir misiniz? mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cve touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccchazırlık için.
Daniel Beck

-1 Bu doğru olabilir, ama cmd'de nasıl yapılacağını soruyordum.
Kale

@Daniel Yaşlandıklarına şüphe yok, yıllardır onları sürüklüyorum. Sadece denedim find . -type f -exec mv {} . ;Ve işe yaramış gibiydi.
Dennis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.