Bir dizindeki dosyaları, dosyanın başka bir yerde bulunduğu yere kitlemeye çalışıyor. Windows 7


0

Tek bir dizinde bulunan 200+ dosyam var, önce alt dizili başka bir dizinde arama yapıp bulduktan sonra değiştirmeliyim. Dosya adları aynı. İçerik / boyut genellikle farklıdır. Bunu yapmak zorunda kaldığım son seferde linux ortamım vardı, bu yüzden birlikte bir emir verdim. Bunu pencerelerde nasıl yapacağımı bilemiyorum.


Google dizin senkronizasyonu veya benzeri terimler. Doğru anlarsam, bunu yapacak birçok yardımcı program var. İhtiyaca bağlı olarak, XCOPY yeterli olabilir. Komut isteminde XCOPY /? Yazın detaylar için.
Steve Rindsberg

Buna ne zaman ihtiyacım olursa, daima TeraCopy kullanırım. MD5 karmalarına dayalı tutarsızlıkların test edilmesini destekleyen ücretsiz bir kopya programıdır. İçeriği bir klasörden diğerine kopyalar ve yalnızca Eskiyi seçersiniz. Daha sonra sadece farklı dosyaları kopyalayacaktır. Kopyanın sonunda yapılan bir test, her iki konumun da aynı olmasını sağlar. Değilse, yalnızca farklı olanlara kopyalanacak dosyaların listesini temizleyebilir ve tekrar kopyalayabilirsiniz.
LPChip

Tüm dosyaları X: \ 'den Y:' ye taşıyor olsaydım xcopy işe yarardı: yapmam gereken şey Y: \ X için: X: \ file.txt ve Y: \ sub \ dir \ file.txt yerini buldu.
tnik

EDIT: Hedefin alt dizinlerde olduğu kısmı kaçırdım. Bu pencerelerde kolayca yapılabilir emin değilim.
LPChip

replace komutu işe yarayacak, sadece x: \ dizinindeki tüm dosyalar üzerinde çalışmasını sağlamaya çalışacağım.
tnik

Yanıtlar:


0

Aşağıdaki PowerShell betiğinin işi yapması gerektiğine inanıyorum. Muhtemelen optimal olmaktan uzaktır, çünkü her bir dosya için kaynak klasörün tam özyinelemeli bir araştırmasını yapıyor, bu yüzden biraz değiştirmek isteyebilirsiniz. Öncelikle kritik olmayan veriler ve klasörler ile test etmenizi şiddetle tavsiye ederim. Küçük bir örnek dosya kümesi ile bazı testler yaptım ve iyi çalıştı, ancak ortamınızdaki dosyalar o kadar basit olmayabilir.

Aradığınız dosya kaynak klasörde yoksa veya kaynak klasörde, aranan ad ile aynı ada sahip birden fazla dosya varsa, beklenmeyen bir davranış olabileceğini unutmayın.

$DestDIR = 'C:\Destination'
$OrigDIR = 'C:\Origin'

Get-ChildItem $OrigDir | ForEach-Object {
    $OrigName = $_.Name
    $OrigPath = $_.FullName

    Get-ChildItem $DestDIR -Recurse | Where-Object {$_.Name -eq $OrigName} | ForEach-Object {
        $DestPath = $_.FullName
        Copy-Item $OrigPath $DestPath -Force
    }
}
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.