Cum se extrag automat fișierele ZIP în Windows 10

Windows 10 nu extrage fiecare fișier ZIP așa cum sosește în mod implicit. PowerShell-ul încorporat poate: observatorul de mai jos monitorizează un folder de descărcare, așteaptă ca un nou fișier .zip să înceteze să se modifice, apoi îl extrage într-un folder cu același nume. Fișierul ZIP original rămâne la locul său, iar o destinație existentă nu este niciodată suprascrisă.

Folosește extragerea automată doar pentru arhivele din surse în care ai încredere. Verifică fișierele înainte de a le deschide sau rula.

Explorer se deschide la Descărcări cu o arhivă ZIP vizibilă în lista de fișiere.
Descărcări conține arhiva ZIP pe care o va monitoriza observatorul.

1. Confirmați folderul de descărcare

În Explorer, introduceți %USERPROFILE%\Downloadsîn bara de adrese. Dacă browserul dvs. salvează în altă parte, utilizați calea folderului respectiv. Acest instrument de monitorizare monitorizează un folder și nu scanează subfolderele.

Salvați scriptul ca Watch-Zips.ps1în Descărcări pentru exemplele de mai jos. Dacă utilizați un alt folder, schimbați prima linie a scriptului în calea completă.

Blocnotes care afișează calea observatorului PowerShell, filtrul de nume de fișier ZIP și setările FileSystemWatcher.
Scriptul indică Descărcări și filtre pentru fișierele .zip.

2. Creați scriptul de observare

Deschideți Notepad, lipiți codul și salvați-l ca Watch-Zips.ps1. În Salvare ca, alegeți Toate fișierele pentru ca Notepad să nu adauge fișiere .txt. Scriptul ascultă fișierele ZIP create și redenumite, verifică dacă fișierul nu mai crește și este deblocat, apoi extrage codul într-un folder temporar înainte de a-l muta la locul său. Documentația Microsoft FileSystemWatcher descrie aceste evenimente și limitele sale pentru buffer-ul de evenimente.

$folder = Join-Path $env:USERPROFILE 'Downloads'
if (-not (Test-Path -LiteralPath $folder)) { throw "Folder not found: $folder" }

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $folder
$watcher.Filter = '*.zip'
$watcher.IncludeSubdirectories = $false
$watcher.NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
$watcher.EnableRaisingEvents = $true
Register-ObjectEvent $watcher Created -SourceIdentifier ZipCreated | Out-Null
Register-ObjectEvent $watcher Renamed -SourceIdentifier ZipRenamed | Out-Null
Write-Host "Watching $folder for ZIP files. Close this window to stop."

while ($true) {
    $signal = Wait-Event -Timeout 2
    if ($null -eq $signal) { continue }
    $zipPath = $signal.SourceEventArgs.FullPath
    Remove-Event -EventIdentifier $signal.EventIdentifier

    $lastLength = -1L
    $stable = 0
    for ($i = 0; $i -lt 600 -and $stable -lt 4; $i++) {
        try {
            $length = (Get-Item -LiteralPath $zipPath -ErrorAction Stop).Length
            $stream = [IO.File]::Open($zipPath, [IO.FileMode]::Open, [IO.FileAccess]::Read, [IO.FileShare]::None)
            $stream.Dispose()
            if ($length -gt 0 -and $length -eq $lastLength) { $stable++ } else { $stable = 0 }
            $lastLength = $length
        } catch { $stable = 0 }
        Start-Sleep -Seconds 1
    }
    if ($stable -lt 4) { Write-Warning "File stayed busy; skipped: $zipPath"; continue }

    $name = [IO.Path]::GetFileNameWithoutExtension($zipPath)
    $destination = Join-Path $folder $name
    if (Test-Path -LiteralPath $destination) {
        Write-Warning "Destination exists; skipped: $destination"
        continue
    }
    $temporary = "$destination.extracting-$([guid]::NewGuid().ToString('N'))"
    try {
        Expand-Archive -LiteralPath $zipPath -DestinationPath $temporary -ErrorAction Stop
        Move-Item -LiteralPath $temporary -Destination $destination -ErrorAction Stop
        Write-Host "Extracted to $destination"
    } catch {
        if (Test-Path -LiteralPath $temporary) { Remove-Item -LiteralPath $temporary -Recurse -Force -ErrorAction SilentlyContinue }
        Write-Warning "Could not extract $zipPath : $($_.Exception.Message)"
    }
}
O fereastră Notepad care afișează verificări ale dimensiunii fișierelor ZIP PowerShell și un test exclusiv de deschidere a fișierelor.
Observatorul verifică dacă un ZIP este stabil și deblocat înainte de extragere.

3. Testează-l înainte de a ascunde fereastra

Deschideți PowerShell și executați:

powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File "$env:USERPROFILE\Downloads\Watch-Zips.ps1"

Așteptați mesajul „Se urmărește”, lăsați fereastra deschisă și descărcați sau copiați un fișier ZIP mic și de încredere în secțiunea Descărcări. Lângă acesta ar trebui să apară un folder cu același nume. Scriptul nu scanează fișierele ZIP deja existente la pornire; testați cu un fișier nou sau recent copiat.

Dacă folderul de destinație există deja, scriptul omite extragerea pentru a-i proteja conținutul. Redenumiți folderul dacă doriți să extrageți din nou arhiva. Închideți fereastra PowerShell pentru a opri acest test de rulare.

Consola PowerShell afișează observatorul care ascultă fișiere ZIP în Descărcări.
Păstrează observatorul deschis în timp ce testezi o arhivă nouă.
File Explorer afișează fișierul SampleData.zip lângă folderul SampleData extras.
Fișierul ZIP rămâne în Descărcări lângă folderul extras.

4. Porniți instrumentul de monitorizare la conectare

Deschideți Programatorul de activități din Start și alegeți Creare activitate . În General, denumiți-o Urmăriți fișierele ZIP descărcate și selectați Executare numai când utilizatorul este conectat . În Declanșatoare, alegeți Nou și setați Începe activitatea la La conectare pentru contul dvs.

În Acțiuni, alegeți Nou , selectați Pornire program și introduceți powershell.execa program. În Adăugare argumente, utilizați această linie, înlocuind-o Alexcu folderul profilului Windows:

-NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\Alex\Downloads\Watch-Zips.ps1"

În Setări, alegeți Nu porniți o instanță nouă dacă sarcina rulează deja, apoi salvați-o. Documentele de referință ale Planificatorului de activități Microsoft prezintă declanșatoarele de conectare. Aici se aplică procesului PowerShell lansat; politica organizației poate bloca în continuare scriptul. Nu slăbiți o politică gestionată. Consultați ghidul politicii de execuțieRemoteSigned Microsoft .

Caseta de dialog Creare sarcină din Planificatorul de activități din fila Acțiuni, cu PowerShell setat să lanseze Watch-Zips.ps1.
Adăugați scriptul PowerShell ca acțiune a activității.
Caseta de dialog Creare sarcină din Planificatorul de activități afișează un declanșator activat la conectare pentru utilizatorul curent.
Pornește observatorul când se conectează contul Windows.

5. Verificați, opriți sau depanați

În Biblioteca Planificatorului de activități, selectați sarcina și alegeți Executare . Confirmați că starea acesteia este În curs de executare , apoi testați cu un alt fișier ZIP de încredere. Pentru a o opri, faceți clic dreapta pe sarcină și alegeți Sfârșit ; alegeți Dezactivare pentru a împiedica pornirea acesteia la următoarea conectare.

Dacă extragerea eșuează, rulați scriptul în mod vizibil pentru a citi avertismentele, a confirma folderul urmărit și a aștepta până la finalizarea descărcării. Pentru o arhivă deja existentă în Descărcări, utilizați opțiunea Extrage tot din File Explorer sau opțiunea PowerShell . Documentația Expand-ArchiveExpand-Archive de la Microsoft menționează o limită de dimensiune a fișierului de 2 GB în API-ul .NET pe care îl utilizează.

Biblioteca Planificatorului de activități care afișează sarcina Urmăriți fișierele ZIP descărcate cu starea În curs de desfășurare.
Confirmați că observatorul programat rulează.

Lasă un comentariu

Cum se verifică rata de descărcare a bateriei în Windows 10

Cum se verifică rata de descărcare a bateriei în Windows 10

Vedeți rata de descărcare a bateriei laptopului dvs. cu Windows 10 în miliwați, înregistrați modificările cu BatteryInfoView și utilizați rapoartele încorporate pentru a verifica capacitatea bateriei și utilizarea aplicațiilor.

Cum să dezactivezi automat Caps Lock după câteva secunde în Windows 10

Cum să dezactivezi automat Caps Lock după câteva secunde în Windows 10

Dezactivați automat Caps Lock în Windows 10 după inactivitatea tastaturii. Configurați CapsUnlocker, alegeți o întârziere de inactivitate și porniți-l cu Windows.

Cum se deschide un shell Linux într-un folder pe Windows 10

Cum se deschide un shell Linux într-un folder pe Windows 10

Deschideți o shell Linux în orice folder Windows 10 cu File Explorer, PowerShell și WSL. Verificați calea Linux și remediați problemele comune de configurare.

Cum să remediați liniile de pe ecranul unui monitor în Windows 10

Cum să remediați liniile de pe ecranul unui monitor în Windows 10

Folosește un test de captură de ecran, verificări ale cablurilor și porturilor, diagnosticarea monitorului, setările de afișare și revenirea la drivere pentru a identifica liniile de pe un monitor cu Windows 10.

Cum se adaugă două ceasuri suplimentare în Windows 10

Cum se adaugă două ceasuri suplimentare în Windows 10

Afișează alte două fusuri orare lângă ceasul din Windows 10. Configurați fiecare ceas suplimentar, dați-i o etichetă clară și găsiți-l în calendarul din bara de activități.

Cum se dezactivează gestionarea energiei pentru dispozitive în Windows 10

Cum se dezactivează gestionarea energiei pentru dispozitive în Windows 10

Împiedicați Windows 10 să oprească un anumit adaptor de rețea sau un dispozitiv USB cu setările la nivel de abonament și controalele Device Manager, plus sfaturi pentru a evita descărcarea excesivă a bateriei.

Cum să remediați un meniu contextual lent în Windows 10

Cum să remediați un meniu contextual lent în Windows 10

Găsește extensia File Explorer care întârzie afișarea meniurilor la clic dreapta în Windows 10, test-o în siguranță cu ShellExView și restaurează orice funcții de meniu de care ai nevoie în continuare.

Cum să creezi o copie de rezervă a unei chei de produs Windows 10 în siguranță

Cum să creezi o copie de rezervă a unei chei de produs Windows 10 în siguranță

Verificați dacă Windows 10 folosește o licență digitală sau o cheie de produs, găsiți o cheie OEM stocată în firmware și salvați detaliile licenței în siguranță pentru o reinstalare.

Cum să identifici un proces în Managerul de activități din Windows 10

Cum să identifici un proces în Managerul de activități din Windows 10

Identificați un proces din Managerul de activități Windows 10 verificând calea executabilă, proprietățile fișierului, editorul, serviciile conectate și o scanare Microsoft Defender.

Cum să identifici simbolurile tastelor funcționale pe un laptop cu Windows 10

Cum să identifici simbolurile tastelor funcționale pe un laptop cu Windows 10

Află ce înseamnă simbolurile comune ale tastelor funcționale pe laptopuri, cum le afectează Fn și Fn Lock și cum să confirmi comanda rapidă potrivită pentru modelul tău de laptop cu Windows 10.