WPSPowerShell jest potężnym narzędziem w systemie Windows. Służy do administracji systemem i aplikacjami z poziomu wiersza poleceń, a dzięki skryptom potrafi zautomatyzować wiele czynności. Chciałbym pokazać, jak za pomocą tego narzędzia zautomatyzować wypakowywanie archiwów RAR, znajdujących się w wielu katalogach.


Z taką sytuacją można się spotkać, kiedy ściągamy z internetu np. cały sezon jakiegoś serialu w wydaniu tzw. scenowym :) Wtedy mamy do czynienia z każdym odcinkiem w osobnym katalogu, w którym znajdują się podzielone na części archiwa RAR, przeważnie ok. 14 MB. Często wypakowywanie takiego czegoś bywa monotonne i irytujące :) Z pomocą przychodzi nam wspomniany PowerShell. Poniżej prezentuję krótki skrypt, który wykona za nas tą pracę:

$env:Path = "C:\Program Files\WinRAR\"
$loc = Get-Location
$folders = ls | Where-Object { $_.PSIsContainer };
foreach ($folder in $folders)
{
   $arr = $folder.FullName, "\*.rar"
   $txt = $arr -join ""
   $arrargs = "x", $txt, $loc
   $args = $arrargs -join " "
   $app =  Start-Process WinRAR $args -passthru
   do
   {
   }
   while (Get-Process -Id $app.Id -ea SilentlyContinue)
}

Pokrótce jak to działa. Na początku dodajemy ścieżkę, do aplikacji WinRar. W drugiej linii dodajemy zmienną, przechowującą, gdzie został uruchomiony skrypt.
Linia

$folders = ls | Where-Object { $_.PSIsContainer };

tworzy tablicę katalogów po której będzie poruszał się skrypt. Ta linia zwraca nam tylko katalogi. Następnie zostaje tworzona pętla, która porusza się po wcześniej zadeklarowanej tablicy. W pętli zostają utworzone wszystkie potrzebne parametry wywołania dla WinRar’a. Linia

 $app =  Start-Process WinRAR $args -passthru

wypakowuje poszczególne pliki. Pętla do…while, została tutaj zastosowana, aby wszystkie archiwa wypakowywały się kolejno, w przeciwnym razie wszystkie archiwa wypakowywałyby się jednocześnie.

Jak to wykorzystać?

W PowerShell, każdy skrypt musi być podpisany. Dlatego aby uruchomić ten skrypt trzeba go albo podpisać, albo zezwolić na uruchamiania wszystkich skryptów. Na czas wykonywania takiego skryptu w konsoli PowerShell można wydać polecenie:

Set-ExecutionPolicy unrestricted -confirm

, które po zaakceptowaniu pozwoli na uruchamianie takiego skryptu.
Kiedy już umożliwimy uruchomienie takiego skryptu, kopiujemy go do katalogu, gdzie mamy to co chcemy wypakować. Następnie po naciśnięciu prawego przycisku myszy uruchamiamy skrypt poleceniem „Run with PowerShell”. Po tym następuje wypakowywanie plików, w miejsce, gdzie został wklejony skrypt.

Po tej operacji należy powrócić do pierwotnych ustawień:

Set-ExecutionPolicy AllSigned

, aby zabezpieczyć się przed przypadkowym uruchomieniem szkodliwego skryptu.
Aby ściągnąć skrypt kliknij TUTAJ!

Wyświetleń : 349