Skrypt do robienia czegoś po renderze
#1
Zauważyłem post kolegi Kamyk79 z programem do wyłączania komputera po renderowaniu.
Postanowiłem się podzielić swoim skryptem, który napisałem jakieś 5 lat temu i używam przy nocnym renderowaniu. Jest to skrypt bat, windowsowe komendy wiersza poleceń, wymaga dostosowania do swoich potrzeb.

Na początek przedstawię algorytm jak skrypt działa.
Jest pętla, w której sprawdzany jest rozmiar pliku co określony czas (do ustawienia w samym skrypcie). Im czas dłuższy tym większa pewność, że komputer nie zamknie się przy jakiejś niewielkiej zwieszce. Jeśli rozmiar urósł od poprzedniego sprawdzania, to skrypt uznaje, że renderowanie się nie skończyło. Skrypt czeka określony czas i sprawdza rozmiar ponownie. Tak się kręci do czasu, aż rozmiar nie urósł od poprzedniego sprawdzania. Wtedy skrypt uznaje, że render jest zakończony i wykonuje akcje jakie ma wykonać na zakończenie renderowania. Tu trzeba sobie samemu coś ustawić. Poniżej na listingu jest zamknięcie systemu po 30 sekundach. Ale można dopisać np wysyłanie maila (są osobne narzędzie do wysyłania maili z poziomu konsoli, celowo nie dodaję tu czegoś gotowego, bo narzędzia nie są moje i jest ich przynajmniej kilka do wyboru).

Jak się to uruchamia? Ano tak. Zapuszczasz renderowanie. Przechodzisz do lokalizacji, gdzie będzie gotowy plik. Klikasz na renderowanym pliku prawym przyciskiem myszy, wybierasz Moje menu -> Monitoruj rozmiar pliku. Odpali się okno konsoli i skrypt będzie robił swoje dopóki okno jest otwarte. Jeśli zamkniesz okno konsoli, to przewiesz monitorowanie rozmiaru.

Teraz skrypt.
Kod:
@echo off
setlocal
::co tyle sekund bedzie sprawdzany plik
set czas=30
::rozmiar podczas ostatniego sprawdzania
set lastsize=0

:check
set size=%~z1
if %size% GTR %lastsize% (
    echo Plik rosnie
    set lastsize=%size%
) ELSE (
    echo Plik nie rosnie
    goto :finish
)
timeout %czas% >nul
goto :check

:finish
::tu dodaj swoje akcje, np wylaczenie komputera, wyslanie maila, wyczyszczenie tempa, przeniesienie gotowego pliku
::teraz jest wyłączanie komputera po 30 sekundach
shutdown -t 30 -s -f
echo Koniec
Zapisz to w jakimś stałym miejscu pod swoją wybraną nazwą np. D:\skryptySystemowe\monitorRozmiaruPliku.bat
Teraz trzeba dodać pozycję do menu kontekstowego.
Kod:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MonitorRozmiaruPliku]
@="Monitoruj rozmiar pliku"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MonitorRozmiaruPliku\command]
@="D:\\_skryptySystemowe\\monitorRozmiaruPliku.bat \"%1\""

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mp4\shell\MojeMenu]
"MUIVerb"="Moje menu"
"SubCommands"="MonitorRozmiaruPliku"
"icon" = ""
"Position"=-
Zapisz to np. na pulpicie pod nazwą np. menu.reg. Teraz kliknij ten plik dwa razy, potwierdź dwa razy i gotowe, do rejestru dopisały się klucze dodające pozycję Moje menu -> monitoruj rozmiar pliku dla plików mp4. Od teraz po kliknięciu prawym przyciskiem myszy na plik .mp4 będziesz miał w menu kontekstowym pozycję Moje menu, a w nim Monitoruj rozmiar pliku.
Aby dodać takie samo menu dla innych plików wystarczy do pliku menu.reg dodać poniższy fragment zamieniając .mp4 w pierwszej linijce na jakieś inne rozszerzenie.
Kod:
[HKEY_CLASSES_ROOT\SystemFileAssociations\.mp4\shell\MojeMenu]
"MUIVerb"="Moje menu"
"SubCommands"="MonitorRozmiaruPliku"
"icon" = ""
"Position"=-
Zapisać i ponownie dodać do rejestru.

Minusem skryptu może być to, że musi być otwarte okno konsoli systemowej. Ale przy nocnym renderowaniu sprawdza się świetnie. Minusem może być też to, że pozostałe bajery (jak wysyłanie maila) trzeba sobie samemu dorobić. Ktoś może się po prostu na tym nie znać. Ma za to zamykanie systemu.
Odpowiedz



   


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Rozmiary( waga pliku a nie czegoś innego) hulk1999 9 5,037 10-07-2012, 15:57
Ostatni post: Pinto

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości