PowerShell'de Dosyaları Bir Klasörden Diğerine Nasıl Kopyalarım?


Dosyaları bir klasörden başka bir klasöre kopyalamanız mı gerekiyor? PowerShell'de bu kolayca mümkündür. Bu eğitimde size çeşitli yöntemleri kullanarak PowerShell'de dosyaları bir klasörden başka bir klasöre nasıl kopyalayacağınızı göstereceğim.

PowerShell'de bir dosyayı bir klasörden diğerine kopyalamak için Copy-Item cmdlet'ini kullanabilirsiniz. Örneğin, Öğe Kopyala -Yol “C:\Kaynak\dosya.txt” -Hedef “C:\Hedef”, file.txt dosyasını Kaynaktan Hedef klasörüne kopyalayacaktır. Birden fazla dosya veya dizin için joker karakterler ekleyin veya dizin içeriğinin tamamını kopyalayıp yapıyı korumak için -Recurse parametresini kullanın.

Copy-Item kullanarak PowerShell'de Dosyaları Bir Klasörden Diğerine Kopyalama

PowerShell'de dosyaları bir klasörden diğerine kopyalamanın en basit yolu Copy-Item cmdlet'ini kullanmaktır. Bu cmdlet, dosyaları, klasörleri ve hatta kayıt defteri anahtarlarını bir konumdan diğerine kopyalamak için tasarlanmıştır. Tek bir dosyayı kopyalamak için Kopyalama Öğesi'nin nasıl kullanılacağına dair temel bir örnek:

Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"

Bu komut, file.txt dosyasını C:\Source dizininden C:\Destination dizinine kopyalayacaktır. Hedef dosya zaten mevcutsa PowerShell varsayılan olarak bu dosyanın üzerine yazar.

Betiği VS kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

Birden Fazla Dosyayı Bir Klasörden Diğerine Kopyalama

PowerShell'de birden fazla dosyayı bir klasörden diğerine kopyalamak için joker karakterler kullanabilirsiniz. Örneğin, tüm .txt dosyalarını bir klasörden diğerine kopyalamak için aşağıdaki komutu kullanabilirsiniz:

Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"

Bu komut, .txt uzantılı tüm dosyaları C:\Source dizininden C:\Destination dizinine kopyalayacaktır.

Özyinelemeli Kopya

PowerShell'deki bir dizinin tüm içeriğini alt dizinler de dahil olmak üzere kopyalamak istiyorsanız -Recurse parametresini kullanabilirsiniz:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -Recurse

Bu komut, dizin yapısını koruyarak tüm dosya ve klasörleri C:\Source dizininden C:\Destination dizinine kopyalayacaktır.

İzinleri Koruma

Kopyalama sırasında dosya izinlerini korumak için -Force parametresini kullanın:

Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -Force

Bu, dosyanın orijinal güvenlik izinlerinin yeni konumda korunmasını sağlayacaktır.

Gelişmiş Kopyalama Teknikleri

Dosyaları Filtreleyerek Kopyalama

PowerShell, dosyaları belirli kriterlere veya filtrelere göre kopyalamanıza olanak tanır. Örneğin son 7 gün içinde değiştirilen dosyaları kopyalamak istiyorsanız şöyle bir şey yapabilirsiniz:

Get-ChildItem -Path "C:\Source" -Recurse | 
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } |
Copy-Item -Destination "C:\Destination"

Bu komut dosyasında, Get-ChildItem kaynak dizindeki tüm öğeleri alır, Where-Object bunları son yazma zamanına göre filtreler ve Copy-Item filtrelenen öğeleri hedef klasöre kopyalar.

Kopya Öğeyi Yeni Öğeyle Birleştirme

Bazen bir dosyayı PowerShell'de bir klasörden başka bir klasöre kopyalamadan önce hedef dizinin mevcut olduğundan emin olmanız gerekir. Bunu yapmak için Kopyalama Öğesi ile Yeni Öğe'yi birleştirebilirsiniz:

New-Item -Path "C:\Destination" -ItemType Directory -Force
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"

New-Item cmdlet'i, eğer mevcut değilse hedef dizini oluşturur ve -Force parametresi, dizin zaten mevcutsa hata vermemesini sağlar.

Robocopy'yi kullanma

Özellikle daha büyük dosyalar veya çok sayıda dosya için daha sağlam dosya kopyalama için, Windows ile birlikte gelen bir komut satırı yardımcı programı olan Robocopy'yi (Sağlam Dosya Kopyalama) kullanabilirsiniz. Bunu bir PowerShell betiğinde şu şekilde kullanabilirsiniz:

robocopy C:\Source C:\Destination /E

/E parametresi, Robocopy'ye boş dizinler de dahil olmak üzere alt dizinleri kopyalamasını söyler.

PowerShell'de Bir klasörden diğerine Kopyalarken Hata İşleme

PowerShell'de dosyaları bir klasörden diğerine kopyalarken hataların işlenmesi önemlidir. PowerShell'in hataları nasıl işlemesi gerektiğini belirtmek için -ErrorAction parametresini kullanabilirsiniz. Örneğin, bir hata oluşsa bile kopyalamaya devam etmek için şunları kullanabilirsiniz:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction Continue

Hataları bir dosyaya kaydetmek istiyorsanız hata çıktısını yeniden yönlendirebilirsiniz:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction SilentlyContinue 2> "C:\log.txt"

Çözüm

Dosyaları bir klasörden diğerine kopyalamak, PowerShell'in kolayca gerçekleştirebileceği yaygın bir gereksinimdir. PowerShell'in temel Copy-Item cmdlet'ini veya filtreleme ve Robocopy gibi daha gelişmiş teknikleri kullanabilirsiniz.

Bu PowerShell eğitiminde, PowerShell'de dosyaların bir klasörden diğerine nasıl kopyalanacağını farklı yöntemler kullanarak örneklerle anlattım.

İlgili makaleler