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

Convertește fotografiile în picturi, schițe și desene animate cu FotoSketcher

Convertește fotografiile în picturi, schițe și desene animate cu FotoSketcher

Transformă o fotografie într-o pictură, o schiță în creion sau un desen animat cu FotoSketcher Studio. Află cum să alegi un efect, să ajustezi previzualizarea și să salvezi opera de artă.

Analizați și identificați fișierele audio în detaliu cu ajutorul Audio Identifier

Analizați și identificați fișierele audio în detaliu cu ajutorul Audio Identifier

Află ce dezvăluie Audio Identifier despre rata de biți, codificatoare și etichete, cum funcționează fluxul său de lucru tradițional și ce instrumente actuale inspectează fișierele sau identifică melodiile.

Indexul meu foto: Un organizator de fotografii open-source pentru Windows

Indexul meu foto: Un organizator de fotografii open-source pentru Windows

Indexul meu foto este un instrument de catalogare a fotografiilor Windows vechi pentru etichetarea, evaluarea și răsfoirea imaginilor locale. Consultați caracteristicile sale documentate, limitele de compatibilitate și o alternativă întreținută.

Schimbați atributele, datele și orele fișierelor și folderelor cu ajutorul programului Attribute Changer

Schimbați atributele, datele și orele fișierelor și folderelor cu ajutorul programului Attribute Changer

Învață cum să folosești Attribute Changer pentru a edita atributele și marcajele temporale ale fișierelor Windows, a actualiza datele fotografiilor JPEG EXIF ​​și a previzualiza modificările în lot în siguranță.

Cum se setează o imagine de fundal diferită pe fiecare monitor în Windows 10

Cum se setează o imagine de fundal diferită pe fiecare monitor în Windows 10

Setați o imagine de fundal separată pentru fiecare monitor Windows 10, identificați afișajele, ajustați potrivirea imaginii și depanați opțiunile de monitor lipsă.

pViewer: Un vizualizator de imagini minimalist și cititor de manga și benzi desenate

pViewer: Un vizualizator de imagini minimalist și cititor de manga și benzi desenate

Află ce face pViewer, cum funcționează modurile sale foto și benzi desenate, ce ediție Windows să descarci și cum diferă versiunile vechi și cele rescrise.

NeoDownloader: Setați parametrii și descărcați imagini în lot de pe site-uri web

NeoDownloader: Setați parametrii și descărcați imagini în lot de pe site-uri web

Învață cum să creezi un proiect NeoDownloader, să alegi un domeniu de aplicare pentru crawl, să setezi filtre de imagine și o destinație și să examinezi descărcările în lot.

Cum să comuți la următorul fundal de desktop cu o tastă rapidă în Windows 7 și 8

Cum să comuți la următorul fundal de desktop cu o tastă rapidă în Windows 7 și 8

Configurați o prezentare de diapozitive în Windows 7 sau 8, creați o scurtătură VBScript și atribuiți o tastă rapidă de la tastatură pentru a trece la imaginea de fundal următoare.

XnConvert: Aplicați efecte și convertiți formatele de imagine în loturi

XnConvert: Aplicați efecte și convertiți formatele de imagine în loturi

Folosește XnConvert pentru a aplica efecte, a redimensiona fotografii și a converti formate de imagine în loturi. Alege setările de ieșire, previzualizează editările și protejează originalele.

Urmăriți orele de lucru și utilizarea computerului cu ManicTime

Urmăriți orele de lucru și utilizarea computerului cu ManicTime

Află cum urmărește ManicTime utilizarea aplicațiilor, timpul activ și inactiv, precum și documentele, apoi transformă istoricul activităților în etichete de proiect și foi de pontaj.