Optik sürücünün otomatik CD çıkarması için nasıl script yapılır?

Little Doge

Hectopat
Katılım
15 Ocak 2021
Mesajlar
1.570
Çözümler
17
Daha fazla  
Cinsiyet
Erkek
DVD'leri PC'ye kopyaladıktan sonra otomatik çıkarsın istiyorum. ChatGPT'ye yaptırdığım script işimi görüyor ama yeni CD'yi takıp kopyalama işlemine başlamak için acele etmezsem, işlem başlayamadan da çıkarıyor. Bu sorunu çözemedim. Windows 10 PowerShell ile yapıyorum.

Yardımcı olabilir misiniz?

Bash:
$drives = @("G:", "E:")

while ($true) {
    foreach ($drive in $drives) {

        try {

            Get-ChildItem "$drive\" -ErrorAction Stop | Out-Null
            $busy = $false
        }
        catch {
            $busy = $true
        }

        if (-not $busy) {

            $ejectCmd = "powershell (new-object -com shell.application).NameSpace(17).ParseName('$drive').InvokeVerb('Eject')"
            cmd /c $ejectCmd

        }
    }

    Start-Sleep -Seconds 3
}
 
Son düzenleme:
Bunu dener misiniz?

Bash:
$drives = @("G:", "E:")

$destinationRoot = "C:\DVD_Yedekleri"

if (!(Test-Path $destinationRoot)) { New-Item -ItemType Directory -Path $destinationRoot | Out-Null }

Write-Host "Otomatik DVD Kopyalama ve Çıkarma Aracı Başlatıldı..." -ForegroundColor Cyan

while ($true) {
    foreach ($drive in $drives) {

        if (Test-Path "$drive\") {
            try {

                $volumeLabel = (Get-Volume -DriveLetter $drive.Trim(":")).FileSystemLabel

                if ([string]::IsNullOrEmpty($volumeLabel)) {
                    $volumeLabel = "DVD_" + (Get-Date -Format "yyyyMMdd-HHmmss")
                }

                $targetPath = Join-Path $destinationRoot $volumeLabel

                Write-Host "Disk algılandı ($drive). '$volumeLabel' klasörüne kopyalanıyor..." -ForegroundColor Green

                $logArgs = @("/E", "/Z", "/R:0", "/W:0", "/NJH", "/NJS")

                Robocopy $drive $targetPath $logArgs

                Write-Host "Kopyalama tamamlandı. Disk çıkarılıyor..." -ForegroundColor Yellow

                $shell = New-Object -ComObject Shell.Application
                $shell.Namespace(17).ParseName($drive).InvokeVerb("Eject")

                while (Test-Path "$drive\") { Start-Sleep -Seconds 2 }

                Write-Host "Sürücü boş. Yeni disk bekleniyor..." -ForegroundColor Gray

            }
            catch {
                Write-Host "Bir hata oluştu: $_" -ForegroundColor Red
            }
        }
    }

    Start-Sleep -Seconds 3
}
 
Bahsettiğim sorun olmadı ve E sürücüsü işini yaptı ama G sürücüsünü çıkarmadı. Ayrıca her yeni CD taktığımda CD'leri algılamamaya ve Windows'u yavaşlatmaya başladılar; fişlerini söküp takmam gerekti.
New File 20.5 m VTS_03_1.VOB
2025/12/04 11:50:32 ERROR 2 (0x00000002) Changing File Attributes G:\VIDEO_TS\VTS_03_1.VOB
Sistem belirtilen dosyayı bulamıyor.

Kopyalama tamamlandı. Disk çıkarılıyor...
Bir hata oluştu: You cannot call a method on a null-valued expression.
Disk algılandı (E:). 'Untitled Project' klasörüne kopyalanıyor...

0 E:\
17 E:\VIDEO_TS\
100% Newer 16384 VIDEO_TS.BUP
 
Son düzenleme:

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı