Jak automatycznie wyodrębnić pliki ZIP w systemie Windows 10

System Windows 10 domyślnie nie rozpakowuje każdego pliku ZIP w momencie jego pobrania. Wbudowany program PowerShell może: poniższy moduł monitorujący monitoruje jeden folder pobierania, czeka, aż nowy plik .zip przestanie się zmieniać, a następnie rozpakowuje go do folderu o tej samej nazwie. Oryginalny plik ZIP pozostaje na swoim miejscu, a istniejąca lokalizacja docelowa nigdy nie jest nadpisywana.

Używaj automatycznego wyodrębniania tylko w przypadku archiwów pochodzących z zaufanych źródeł. Sprawdź pliki przed ich otwarciem lub uruchomieniem.

Eksplorator plików otwiera się w sekcji Pobrane, a na liście plików widoczne jest archiwum ZIP.
Pobrane pliki zawierają archiwum ZIP, które będzie monitorowane przez obserwatora.

1. Potwierdź folder pobierania

W Eksploratorze plików wpisz adres %USERPROFILE%\Downloadsw pasku adresu. Jeśli przeglądarka zapisze plik w innym miejscu, użyj ścieżki do tego folderu. Ten moduł monitoruje jeden folder i nie skanuje podfolderów.

Zapisz skrypt tak jak Watch-Zips.ps1w sekcji „Pobrane” dla poniższych przykładów. Jeśli używasz innego folderu, zmień pierwszy wiersz skryptu na pełną ścieżkę.

Notatnik pokazujący ścieżkę obserwatora programu PowerShell, filtr nazw plików ZIP i ustawienia FileSystemWatcher.
Skrypt wskazuje na pobieranie i filtry plików .zip.

2. Utwórz skrypt obserwatora

Otwórz Notatnik, wklej kod i zapisz go jako Watch-Zips.ps1. W polu „Zapisz jako” wybierz opcję „ Wszystkie pliki” , aby Notatnik nie dodawał .txt. Skrypt nasłuchuje utworzonych i zmienionych nazw plików ZIP, sprawdza, czy plik przestał rosnąć i jest odblokowany, a następnie wypakowuje go do folderu tymczasowego przed przeniesieniem na miejsce. Dokumentacja programu Microsoft FileSystemWatcher opisuje te zdarzenia i jego limity bufora zdarzeń.

$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)"
    }
}
Okno Notatnika pokazujące sprawdzanie rozmiaru pliku ZIP w programie PowerShell oraz ekskluzywny test otwierania pliku.
Przed rozpakowaniem moduł sprawdza, czy plik ZIP jest stabilny i odblokowany.

3. Przetestuj przed ukryciem okna

Otwórz program PowerShell i uruchom:

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

Poczekaj na komunikat „Obserwuję”, pozostaw okno otwarte i pobierz lub skopiuj mały, zaufany plik ZIP do Pobranych. Obok powinien pojawić się folder o tej samej nazwie. Skrypt nie skanuje plików ZIP, które są już obecne podczas uruchamiania; przetestuj je z nowym lub nowo skopiowanym plikiem.

Jeśli ten folder docelowy już istnieje, skrypt pomija rozpakowywanie, aby chronić jego zawartość. Zmień nazwę folderu, jeśli chcesz ponownie rozpakować archiwum. Zamknij okno programu PowerShell, aby zatrzymać ten test.

Konsola programu PowerShell wyświetlająca moduł obserwujący pliki ZIP w Pobranych.
Pozostaw obserwatora otwartego podczas testowania nowego archiwum.
Eksplorator plików pokazujący plik SampleData.zip obok wyodrębnionego folderu SampleData.
Plik ZIP pozostaje w Pobranych obok wypakowanego folderu.

4. Uruchom obserwującego po zalogowaniu

Otwórz Harmonogram zadań w menu Start i wybierz Utwórz zadanie . W sekcji Ogólne nadaj mu nazwę „ Obserwuj pobrane pliki ZIP” i zaznacz opcję Uruchom tylko po zalogowaniu użytkownika . W sekcji Wyzwalacze wybierz Nowy i ustaw opcję Rozpocznij zadanie na „Po zalogowaniu” dla swojego konta.

W sekcji Akcje wybierz Nowy , wybierz Uruchom program i wpisz powershell.exeprogram. W polu Dodaj argumenty użyj tego wiersza, zastępując Alexgo folderem profilu systemu Windows:

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

W Ustawieniach wybierz opcję Nie uruchamiaj nowej instancji, jeśli zadanie jest już uruchomione, a następnie zapisz je. Dokumenty referencyjne Harmonogramu zadań firmy Microsoft dotyczące wyzwalaczy logowania. Dotyczy to uruchomionego procesu programu PowerShell; zasady organizacji nadal mogą blokować skrypt. Nie osłabiaj zarządzanych zasad. Zobacz przewodnik po zasadach wykonywaniaRemoteSigned firmy Microsoft .

Harmonogram zadań Okno dialogowe Utwórz zadanie na karcie Akcje z programem PowerShell ustawionym na uruchamianie pliku Watch-Zips.ps1.
Dodaj skrypt programu PowerShell jako akcję zadania.
Harmonogram zadań - okno dialogowe Utwórz zadanie pokazujące włączony wyzwalacz Przy logowaniu dla bieżącego użytkownika.
Uruchom funkcję obserwowania po zalogowaniu się na koncie Windows.

5. Sprawdź, zatrzymaj lub rozwiąż problemy

W bibliotece Harmonogramu zadań wybierz zadanie i kliknij Uruchom . Sprawdź, czy jego status to Uruchomione , a następnie przetestuj z innym zaufanym plikiem ZIP. Aby je zatrzymać, kliknij zadanie prawym przyciskiem myszy i wybierz Zakończ . Wybierz Wyłącz , aby uniemożliwić jego uruchomienie przy następnym logowaniu.

Jeśli rozpakowanie się nie powiedzie, uruchom skrypt w trybie widocznym, aby przeczytać ostrzeżenia, potwierdzić folder obserwowany i poczekać na zakończenie pobierania. W przypadku archiwum znajdującego się już w Pobranych plikach, użyj polecenia „ Wypakuj wszystkie” w Eksploratorze plików lub polecenia programu PowerShell . Dokumentacja narzędzia „Rozpakuj archiwum”Expand-Archive firmy Microsoft podaje limit rozmiaru pliku wynoszący 2 GB w używanym przez niego interfejsie API .NET.

Biblioteka harmonogramu zadań pokazująca zadanie „Obserwuj pobrane pliki ZIP” ze statusem „Uruchomione”.
Sprawdź, czy zaplanowany moduł obserwujący jest uruchomiony.

Zostaw komentarz

Konwertuj zdjęcia na obrazy, szkice i kreskówki za pomocą FotoSketcher

Konwertuj zdjęcia na obrazy, szkice i kreskówki za pomocą FotoSketcher

Zamień zdjęcie w obraz, szkic ołówkiem lub komiks dzięki FotoSketcher Studio. Dowiedz się, jak wybrać efekt, dostosować podgląd i zapisać swoją grafikę.

Szczegółowa analiza i identyfikacja plików audio dzięki Audio Identifier

Szczegółowa analiza i identyfikacja plików audio dzięki Audio Identifier

Dowiedz się, co Audio Identifier ujawnia na temat szybkości transmisji, koderów i tagów, jak działa jego starszy proces pracy i które obecne narzędzia sprawdzają pliki lub identyfikują utwory.

Mój indeks zdjęć: program do organizacji zdjęć typu open source dla systemu Windows

Mój indeks zdjęć: program do organizacji zdjęć typu open source dla systemu Windows

My Photo Index to starszy katalog zdjęć dla systemu Windows, umożliwiający tagowanie, ocenianie i przeglądanie lokalnych obrazów. Zapoznaj się z udokumentowanymi funkcjami, ograniczeniami zgodności i aktualizowaną alternatywą.

Zmień atrybuty plików i folderów, daty i godziny za pomocą narzędzia Attribute Changer

Zmień atrybuty plików i folderów, daty i godziny za pomocą narzędzia Attribute Changer

Dowiedz się, jak używać narzędzia Attribute Changer do edytowania atrybutów plików systemu Windows i znaczników czasu, aktualizowania dat zdjęć JPEG EXIF ​​i bezpiecznego podglądu zmian wsadowych.

Jak ustawić inną tapetę na każdym monitorze w systemie Windows 10

Jak ustawić inną tapetę na każdym monitorze w systemie Windows 10

Ustaw osobną tapetę dla każdego monitora systemu Windows 10, zidentyfikuj wyświetlacze, dostosuj dopasowanie obrazu i rozwiąż problemy z brakującymi opcjami monitora.

pViewer: Minimalistyczna przeglądarka obrazów i czytnik mangi i komiksów

pViewer: Minimalistyczna przeglądarka obrazów i czytnik mangi i komiksów

Dowiedz się, do czego służy pViewer, jak działają tryby zdjęć i komiksów, którą edycję systemu Windows pobrać i czym różnią się wersje starsza i przepisana.

NeoDownloader: ustawianie parametrów i zbiorcze pobieranie obrazów ze stron internetowych

NeoDownloader: ustawianie parametrów i zbiorcze pobieranie obrazów ze stron internetowych

Dowiedz się, jak utworzyć projekt NeoDownloader, wybrać zakres indeksowania, ustawić filtry obrazów i miejsce docelowe oraz przeglądać pliki do pobrania w partiach.

Jak przełączyć się na następną tapetę pulpitu za pomocą klawisza skrótu w systemach Windows 7 i 8

Jak przełączyć się na następną tapetę pulpitu za pomocą klawisza skrótu w systemach Windows 7 i 8

Skonfiguruj pokaz slajdów w systemie Windows 7 lub 8, utwórz krótki skrót VBScript i przypisz klawisz skrótu, aby przejść do następnej tapety.

XnConvert: stosuj efekty i konwertuj formaty obrazów partiami

XnConvert: stosuj efekty i konwertuj formaty obrazów partiami

Użyj XnConvert do stosowania efektów, zmiany rozmiaru zdjęć i konwersji formatów obrazów w partiach. Wybierz ustawienia wyjściowe, wyświetl podgląd edycji i chroń swoje oryginały.

PickMeApp: Przenieś programy Windows z zapisanymi ustawieniami

PickMeApp: Przenieś programy Windows z zapisanymi ustawieniami

Przenieś zainstalowane aplikacje systemu Windows na inny komputer za pomocą aplikacji PickMeApp. Dowiedz się, jak działają pakiety TAP, jak przechwycić ustawienia i co może nie zostać przeniesione.