Tüm dosya adlarının farklı olduğunu varsayarak Windows 7'deki bir klasörü nasıl düzleştirebilirim?


19

Örneğin, aşağıdaki klasör hiyerarşisine sahip olduğumu varsayalım:

Folder1
   File1
   Folder2
      File2
   Folder3
      File3
      Folder4
         File4

Ben sonuç bazı komut gerçekleştirmek istiyorum:

Folder1
   File1
   File2
   File3
   File4

Veya benzeri. Windows'u çok iyi tanımıyorum, bu yüzden cevapta olabildiğince fazla ayrıntıyı takdir ediyorum.


Bunu sizin için yapacak mevcut bir program mı yoksa bunu yapan bir kod parçası (hangi programlama dili) mı arıyorsunuz?
Matt Ball

@MattBall: Bunu yapmanın mümkün olan en kolay yolunu arıyorum. İdeal olarak, bu bir terminal açmak ve bir komut girmek olacaktır. Yine, Windows konusunda çok deneyimli değilim, bu yüzden lütfen daha iyi bir yol olup olmadığını bana bildirin. Teşekkürler.

Yanıtlar:


32

Mutlak en kolay yol, ortak kök klasöre girmek ve tüm dosyaları aramaktır (yani * için arama yapmak). Tüm dosyalar bulunduğunda, tüm dosyaları işaretleyin, Ctrl + X tuşlarına basın ve ortak kök klasöre tekrar gidin. Şimdi tüm dosyaları kök klasöre yapıştırmak için Ctrl + V tuşlarına basın. Tamamlandığında, tüm alt dizinleri silin.

Bunun bir toplu iş olarak yapılıp yapılamayacağını bilmiyorum.


1
Bunun basitliğini seviyorum, ancak 40k dosya ile denedim ve explorer sürecini çökertti.
UpTheCreek

Komutan cevabı bana daha kolay geliyor.
17.07.2017

13

Sonunda büyük bir hiyerarşik yapıyı (benim durumumda png) düzleştirmem gerektiğinde bu powershell yaklaşımını kullandım:

Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\

Düzleştirmek için Move-Item daha uygun olabilir mi?
geisterfurz007 Bu kaosu durdur

4

windows exe: http://en.sourceforge.jp/projects/sfnet_flatfolder/

veya AHK:

fileselectfolder,MyFold,::{20d04fe0-3aea-1069-a2d8-08002b30309d}
SetWorkingDir, %MyFold%
loop, *.*,0,1
{
  parentpath := RegExReplace(A_LoopFileDir,"\\","-")
  ;StringReplace, parentpath, A_LoopFileDir, \,-,All
  newname = %parentpath%-%A_LoopFileName%
  ;msgbox %newname%
  If a_loopfiledir <>
    filemove, %a_loopfilefullpath%,%newname%
}

loop, %myfold%\*.*,2,1
  fileremovedir, %a_loopfilefullpath%,1

exitapp

Opus dizinini kullanma veya kullanma

veya Powershell

(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}

veya Toplu (yukarıda belirtildiği gibi)

veya manuel arama, yukarıda belirtildiği gibi kesin ve yapıştırın

Becerinize ve eğilimlerinize bağlı olarak bunlardan herhangi birini seçmenin ve ihtiyaçlarınıza göre hassaslaştırmanın birçok yolu vardır.

Yukarıdaki işlemden sonra bu Boş Dizinleri Kaldır'a ihtiyacınız olabilir.


1
powershell komutu kısa ve iyi çalışıyor
Maxim Yefremov

3

Dir zaman zaman elle manuel olarak düzleştirmek gerekirse, Total Commander mükemmeldir.

Total Commander: Dümdüz gitmek istediğiniz yere gidin. Menüde Komutlar> Şube Görünümü'nü tıklayın . Ve her şeyin düzleştiğini görüyorsunuz, başka bir klasöre taşıyabilir / kopyalayabilirsiniz.

Dosya adlarıyla biraz uğraşmanız gerekiyorsa: Düzleştirilmiş görünümdeki tüm dosyaları seçin, menüde Dosyalar> Çoklu Yeniden Adlandırma Aracı'na gidin . Burada "Maskeyi yeniden adlandır" ı kullanarak gerçek dosya adlarına giden yoldan bazı bilgiler ekleyebilirsiniz, sadece eklenti etiketi / düğmesini kullanmanız, arama ve değiştirme özelliği ve dosya adlarında son düzenlemeler yapmanıza izin veren küçük katlayıcı düğmesini kullanmanız yeterlidir. Metin düzeltici. Kulağa karmaşık gelebilir, ancak IMO'nun en kolay yolu :)


Windows Komutanı nedir? Şunu mu demek istediniz: Total Commander?
UpTheCreek

Kesinlikle :) 10 yıldır kullanıyorum, o zamanlar Windows Commander adıydı. Düzenlendi
teejay

Teşekkürler. Sadece denedim. 40k küçük dosyalar için işe yaramaz olsa da :( 10 dakika boyunca çok fazla CPU tükettikten sonra tekrarlanan 'dosya oluşturulamadı' hataları ile geldi
UpTheCreek

CPU kullanımı ve ima edilen yavaşlık talihsiz ama anlaşılabilir :) Hata başka bir şeydir .. kötü adlandırma, toplam komutan hatası veya sadece TC'nin bu kadar çok dosyayı işleyememesi olabilir. Önce daha az sayıda dosyayı yeniden adlandırmayı veya TC'nin yeni sürümünü kullanmayı
tercih ederim

@teejay, önerilerinizin ayrıntıları için balık tutmak zorunda kaldım, ama sonunda yapmayı başardım. Yolun bölümlerini ayıklamak ve dosya adının önekini yapmak için expander2 eklentisini kullandım. Bir sonraki adam için bazı detaylar eklemek isteyebilirsiniz. Tx.
killogre

3

Süper teknik olarak eğimli olmayanlar için bir komut satırı seçeneği ile oldukça basit.

  1. "Flatten.cmd" adlı bir yerde dosya oluşturun
  2. Bu dosyayı Not Defteri'nde açın
  3. Dosyaya aşağıdakileri yerleştirin:

    FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
    
  4. "{SourcePath}" ifadesini, düzleştirmek istediğiniz klasörle değiştirin. Sizin durumunuzda "c: \ Folder1"

  5. "{Hedef"} yerine dosyaların taşınmasını istediğiniz klasörle değiştirin. Sizin durumunuzda da "c: \ Folder1". Kod şimdi şöyle görünmelidir:

    FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
    
  6. Bir komut satırı penceresi açın. Bunu birkaç yolla yapabilirsiniz, ancak bu hızlıdır:

    • Başlat düğmesine tıklayın
    • Tüm Programlar'ı tıklayın
    • Aksesuarlara tıklayın
    • Komut İstemi'ni tıklayın
  7. Komut satırı penceresinde şunu yazın:

    cd {folder where you put the flatten.cmd file}
    flatten
    

Ve bunu yapacak (Windows 8+) Bunu sadece 10.000 müzik dosyası içeren bir klasörü düzleştirmek için yaptım. Tıkır tıkır çalışıyor.

FOR komut satırı yardımcı programının seçeneklerini https://technet.microsoft.com/en-us/library/bb490909.aspx adresinde bulabilirsiniz .


1

bir toplu iş komut dosyası kullanarak (başımın üstünden):

FOR komutunu arayın

İlk satır tüm dosyaları alt dizinlerden köke taşır. İkincisi alt klasörleri siler

for /f %f in ('dir "c:\folder\*" /s/b/a-d') do if not %~ff"=="c:\folder" move "%f" "c:\folder"
for /f %f in ('dir "c:\folder\*" /s/b/ad') do if not "%~ff"=="c:\folder" rd /s/q "%f" 

bu yüzden bir terminal açmak ve bu komutları girmek zorunda, 'klasör' uygun yolu ile değiştirdiğinizden emin olun? Teşekkürler.

Eğer bir senaryoda yazmak istemiyorsanız evet. OTOH .....
Preet Sangha

Bu genelleştirilebilir ve bir bağlam menüsü eylemine eklenebilir mi? Bir dosyaya sağ tıklayıp "Dosyayı Düzleştir" e tıklamak ve içindeki tüm dosyaların klasör düzeyine taşınmasını isterim. Sonra klasörü silmek de iyi olurdu.
MAW74656

evet, klasör adı olarak% 1 içeren bir toplu iş dosyasına koyabilir. stackoverflow.com/questions/6162415/…
Preet Sangha


1

Merhaba xxcopy (www.xxcopy.com) aracını, steriods üzerindeki xcopy (sıralama) aracını da kullanabilirsiniz. Bu araçla klasörlerdeki dosyaları tek bir klasöre "düzleştirebilirsiniz".

c:> xxcopy / kaynak klasörler / düzleştir / SG

Sadece bu bağlantıyı okuyun: http://www.xxcopy.com/xxcopy16.htm

Şerefe.

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.