Site Overlay

PowerShell ile Excel Dosyasındaki Dosya Adlarına Göre Toplu Dosya Kopyalama

PowerShell ile Excel Dosyasındaki Dosya Adlarına Göre Toplu Dosya Kopyalama

Bu rehber, bir PowerShell betiği kullanarak Excel dosyasındaki A sütunundaki dosya adlarına göre kaynak klasördeki dosyaları hedef klasöre toplu bir şekilde nasıl kopyalayacağınızı anlatmaktadır. Excel dosyasındaki sayfa adı “Sayfa1” olarak kabul edilmiştir ve betik, kaynak ve hedef klasörlere göre dosya kopyalama işlemi gerçekleştirir.

1. Gereksinimler

Bu işlem için aşağıdaki gereksinimlere sahip olmanız gerekir:

  • Windows işletim sistemi (PowerShell ile uyumlu)
  • Excel dosyasına erişim ve doğru sayfa adı (Sayfa1)
  • Kaynak ve hedef klasörlerin belirlenmiş olması

2. Betik Nasıl Çalışır?

PowerShell betiği aşağıdaki adımları takip eder:

  1. Excel Dosyasını Açma: Betik, belirtilen Excel dosyasını açarak “Sayfa1” adlı sayfadaki dosya adlarını okur.
  2. Dosya Adlarını Okuma: A sütunundaki tüm dosya adları tek tek okunur ve bir listeye eklenir.
  3. Dosya Kopyalama: Listeye eklenen her dosya adı için, kaynak klasördeki dosya kontrol edilir. Dosya mevcutsa, hedef klasöre kopyalanır.
  4. Sonuçları Yazdırma: Dosya başarıyla kopyalanmışsa bir başarı mesajı, kopyalanamayan dosyalar için hata mesajı yazdırılır.

3. PowerShell Betiği

Excel dosyasındaki dosya adlarına göre toplu dosya kopyalama işlemini gerçekleştiren PowerShell betiği:


# Excel dosyasının yolu ve A sütununda dosya adları
$excelDosyasi = "C:\Users\arifa\Desktop\file.xlsx"  # Excel dosyasının tam yolu
$sayfaAdi = "Sayfa1"  # Excel sayfası adı (Sayfa1 olarak güncellendi)
$sutunAdi = "A"  # Dosya adlarının bulunduğu sütun (A sütunu)

# Kaynak ve hedef klasörler
$kaynakKlasor = "C:\Users\arifa\Desktop\A"
$hedefKlasor = "C:\Users\arifa\Desktop\B"

# Excel dosyasını açmak için COM objesi kullanıyoruz
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false  # Excel'in görünmemesi için false olarak ayarlıyoruz

# Excel dosyasını aç ve belirli sayfayı seç
try {
    $workbook = $excel.Workbooks.Open($excelDosyasi)
    $worksheet = $workbook.Sheets.Item($sayfaAdi)
} catch {
    Write-Host "Excel dosyasını açarken bir hata oluştu: $_"
    $excel.Quit()
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
    exit
}

# A sütunundaki tüm dosya adlarını al
$dosyaAdlari = @()
$row = 1
while ($worksheet.Cells.Item($row, 1).Value2 -ne $null) {
    $dosyaAdlari += $worksheet.Cells.Item($row, 1).Value2
    $row++
}

# Kaynak klasörde dosyaları kontrol et ve kopyala
foreach ($dosyaAdi in $dosyaAdlari) {
    # Dosya adını boşluklardan temizle
    $dosyaAdi = $dosyaAdi.Trim()

    if ($dosyaAdi -ne "") {
        $kaynakDosyaYolu = Join-Path $kaynakKlasor $dosyaAdi
        $hedefDosyaYolu = Join-Path $hedefKlasor $dosyaAdi

        # Dosyanın var olup olmadığını kontrol et
        if (Test-Path $kaynakDosyaYolu) {
            # Dosya varsa, hedef klasöre kopyala
            try {
                Copy-Item $kaynakDosyaYolu -Destination $hedefDosyaYolu -Force
                Write-Host "Kopyalanan dosya: $dosyaAdi"
            } catch {
                Write-Host "Dosya kopyalanırken hata oluştu: $dosyaAdi - $_"
            }
        } else {
            Write-Host "Dosya bulunamadı: $dosyaAdi"
        }
    } else {
        Write-Host "Boş satır bulundu, atlanıyor..."
    }
}

# Excel dosyasını kapat
$workbook.Close()
$excel.Quit()

# COM objesini serbest bırak
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
            

4. Betik Nasıl Çalıştırılır?

Betik şu adımlarla çalıştırılabilir:

  1. Excel dosyasının yolunu ve sayfa adını doğru şekilde belirlediğinizden emin olun.
  2. PowerShell’i açın ve betiği çalıştırmak için gerekli izinleri verin.
  3. Kaynak ve hedef klasör yollarını doğru şekilde belirleyin.
  4. Betik çalıştırıldığında, belirtilen Excel dosyasındaki A sütunundaki dosya adlarına göre kaynak klasördeki dosyalar hedef klasöre kopyalanacaktır.

5. Sonuçlar ve Hata Yönetimi

Betik çalıştırıldığında aşağıdaki durumlarla karşılaşabilirsiniz:

  • Başarıyla Kopyalanan Dosyalar: Dosya, hedef klasöre başarıyla kopyalanır ve konsola başarı mesajı yazdırılır.
  • Dosya Bulunamadı: Kaynak klasörde dosya bulunamazsa, konsola “Dosya bulunamadı” mesajı yazdırılır.
  • Boş Satırlar: Excel dosyasındaki boş satırlar atlanır ve “Boş satır bulundu, atlanıyor…” mesajı yazdırılır.
  • Hata Durumunda: Dosya kopyalanırken bir hata oluşursa, hata mesajı yazdırılır.

image 11
Başka cihazda görüntüle
Arif Akyüz Sistem Network Yöneticisi ve Siber Güvenlik Uzmanı
Arif Akyüz Sistem Network Yöneticisi ve Siber Güvenlik Uzmanı

Arif Akyüz
Bilgi Teknolojileri
Sistem Network Yöneticisi
ve Siber Güvenlik Uzmanı
[email protected]

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Author: Arif Akyüz

Experienced Information Technology System Specialist with a demonstrated history of working in the retail industry. Skilled in Windows Server, Management, Leadership, Troubleshooting, and Team Management. Strong information technology professional graduated from İstanbul Üniversitesi. * Cloud Administrator Office 365 (E3 Admin) Office 365 (Hybrid Exchange) Office 365 SharePoint Admin One Driver Business ownCloud * Video Conference Administrator Microsoft Teams Skype For Business Zoom CiscoWebex * Network Administator Cisco ASA 5510 Cisco Firepower SonicWALL NPS Hotspot * Security Vulnerability Administrator Nessus Vulnerability Scan OpenVas Vulnerability Scan Rapid 7 * Virtualization Administrator Vmware V-Center vSphere VMware ESXi Hyper-V Hyper-V Cluster Microsoft Azure * Backup Administrator Symantec Backup Exec Veritas Backup Exec Veeam Backup(WM) * Mobile Device Management Mobile Iron(MDM) Mobile@Works(MDM) * Endpoint Security administrator Symantec Endpoint Protection Kaspersky Endpoint Security Trend Micro Endpoint * Encryption management Sophos SafeGuard Disk Encryption BitLocker * Microsoft Windows Server Administrator SCCM Microsoft Failover Cluster Domain Trust Exchange 2010 Exchange 2016 Active Directory (Delegation) DHCP DNS Group Policy(GPO) Print Server File Server Terminal Server Radius WSUS IIS SQL Server * Linux Administrator Ubuntu Server Centos Server *ISP Management Vodafone MPLS Metro Ethernet Datacenter

© 2024 Arif Akyüz. Tüm Hakları Saklıdır. Gizlilik politikası
Yasal Uyarı: Bu sitede yer alan makaleler bilgi amaçlıdır ve hatalar içerebilir. Site sahibi, bu bilgilerin kullanımı sonucunda oluşabilecek zararlardan sorumlu tutulamaz.