Skocz do zawartości

File Watcher Simple


Rekomendowane odpowiedzi

W wątku https://www.fixitpc.pl/topic/15815-dirmonexe-jak-przechwycic-zdarzenie-i-wywolac-inny-programik/ podziękowałem za pomoc i wskazanie tytułowego File Watcher Simple.... i wątek się zamknął.

A ja aktualnie się bawię tym gadżetem i bardzo mi się podoba. Niestety kilka rzeczy jest dla mnie niejasnych. Z braku wiedzy oczywiście i umiejętności.

Najogólniej to o właściwości "regułki" idzie. Umiem ustawić tak jak mi pasuje zakładki:

- File system events

- Filters

- Process

I do tego miejsca ok - pojawienie się "wydarzenia" wywołuje wskazany programik, powiedzmy bata jakiegoś. Ale nie umiem do programu przekazać nazwy pliku. Odpowiada za to zakładka "process arguments" chyba. A w niej (chyba) pola "process arguments", "process arguments file name escape string" i check box "Use file name as argument".

I ja nie umiem tego ustawić, tak żeby w test.bat przypisać jakiejś zmiennej nazwę pliku. A to by mi wystarczyło już na wszystkie moje potrzeby.

 

Pozdro.

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

I ja nie umiem tego ustawić, tak żeby w test.bat przypisać jakiejś zmiennej nazwę pliku. A to by mi wystarczyło już na wszystkie moje potrzeby.

 

Nie zabardzo umiem zrozumieć to zdanie :lol: Ale dziś wolno jarzę to może dlatego. Chodzi o coś takiego:

 

post-24-0-97367800-1360600577_thumb.png

 

post-24-0-22939900-1360600586_thumb.png

 

Streams wykonał się z argumentami, jak miał. Bo z plikiem .bat jeszcze nie testowałem. Jak sprawdze to edytuję post.

 

 

 

EDIT:

Filmik:

 

post-24-0-33642500-1360602457_thumb.gif

 

Zawartośc skryptu:

 

@echo off
echo.
Type C:\WIndows\Windowsupdate.log | FINDstr /I "unable"  | wtee -a "C:\test\log.txt"
notepad "C:\test\log.txt"
echo.
echo. "Log wygenerowany dnia: %date% %time%. Zapisany w katalogu test."

 

Szuka wyrażenia regularnego w pliku. Wyświetla wynik na ekranie, zapisuje do pliku we wskazane miejsce, log pliku nie jest zastępowany nowym tylko nadpisywany kolejnymi danymi po czym zostaje otwarty w notatniku. Do poprawnego działania potrzebny Wtee, aby działało przekierowanie.

Odnośnik do komentarza

No bo może ja nie umiem się wyrazić jasno. Ale i tak z grubsza załapałeś w czym rzecz. Przesłałeś parametr, streams przeskanował wpisaną z palca ścieżkę D:\. To teraz utrudnienie (o które mi chodzi):

1) FWS wykrywa w katalogu test pojawiający się plik xyz.pdf

2) FSW wywołuje streams.exe ale dla konkretnego pliku, czyli streams.exe -s xyz.pdf

 

Wydaje mi się, że zaznaczenie tego check boxa o którym piszę wcześniej powinno jakoś to umożliwić.

I coś czuję, że z batem będzie podobnie - jeśli uda się wywołać bata z dodaną nazwą pliku, to wewnątrz bata odczytam tę nazwę za pomocą %1 czy jakoś tak, np SET nazwa_wykrytego_pliku=%1.

I wtedy już sobie mogę z tym robić dalej co chcę. Rozjaśniłem nieco? :)

 

Edit: OK, metodą prób i błędów mniej więcej osiągnąłem cel.

Najpierw bat testowy (FWS-test.bat)

CLS
echo "przekazana nazwa pliku %1 jako parametr"
pause

Teraz tego bata wskazuję jako proces do wykonania po detekcji, w parametrach zaznaczam check boxa i dodatkowo w dwóch polach podaję jakiś znak. W załączniku akurat myślnik, ale próbowałem też spację. też zadziałała.

W każdym razie udało się do bata przekazać nazwę wykrytego pliku.

A to, że ja nie rozumiem dokładnie co robię to kompletnie inna sprawa - w polach "Process arguments" oraz "Process arguments file name escape string" może być dowolny ciąg znaków, byle taki sam w obu polach.

 

Nie wiem też, jakie ma znaczenie wybór ścieżki "Process working directory" bo wygląda, że dowolnie mogę wybrać i nie ma to znaczenia większego, podobnie jak nie wiem do czego służą niektóre pozostałe zakładki. Ale grunt, że zadanie rozwiązane.

Ale nie zamykajmy jeszcze tematu przez chwilę, bo może zaraz się pojawią kolejne kwestie - np ustawienie jako serwis uruchamiany przy starcie systemu

post-5633-0-78146600-1360615605_thumb.png

post-5633-0-33549100-1360615618_thumb.png

post-5633-0-39386500-1360615628_thumb.png

Odnośnik do komentarza

Process arguments filename escape string

Ja to rozumiem tak: Użyj nazwy pliku jako argumentu.

 

Nie testowałem tego.

 

Np. Process Advanced możes definiować z jakiego konta maja zostać uruchomione wystąpienia programów. Np. uruchomienie z konta admina, własnie przed chwilą sprawdziłem i jak cmd i notatnik uruchomiły sie z z konta "Administrator"

 

Jako usługę:

 

1. Systemowe polecenie sc create

 

http://technet.micro...v=ws.10%29.aspx

 

http://support.microsoft.com/kb/251192

 

2.

 

http://servicize.codeplex.com/

 

3. Nie wiem co to za systemu używasz:

 

http://support.micro...om/kb/137890/pl

 

4.

 

http://simpleauto.ho...ome/SrvAny.html

 

 

5. I najwygodniejsze

 

http://tools.sysprogs.org/srvman/

 

Posiada różne opcje uruchomieniowe jako: np. sterownik

 

post-24-0-66298100-1360617961_thumb.png

Odnośnik do komentarza

... oj, straszne te opisy, np. tego srvAny już do czegoś stosowałem i dałem jakoś radę, ale w tym wątku miałem na myśli raczej to, co daje już sam zestaw FWS, a dokładnie FSUtilities - my tu omawiamy wersję "GUI" a producent dał do dyspozycji wersję konsolową i jakiś pakiecik do zainstalowania jako usługa. Konsola i usługa najlepiej działa z konfigiem stworzonym w GUI - nad tym już kończę pracę

Odnośnik do komentarza

File Watcher Windows Service instalacja używa i tak systemowego polecenia sc create:

 

This batch file uses 'sc.exe' and it uninstalls any previous versions of the service and then installs the new service.

 

 

http://sourceforge.n...Windows_Service

 

Jest w opisie albo ręczna, albo automat ze skryptu .bat

 

 

EDIT:

 

Tak na szybko sprawdzałem:

 

1. File System Watcher -> Tools -> Options -> Application -> zaptaszkować "Start all enabled file watchers at startup"

 

post-24-0-17263200-1360660809_thumb.png

 

Czyli ma uruchamiać wszystkie utworzone zadania podczas uruchomienia głównego programu.

 

2. Utworzenie usługi:

 

sc create "FSW" binPath= "C:\ścieżka\FileWatcherSimple.exe"

 

post-24-0-27835200-1360660838_thumb.png

 

Usuwanie usługi:

 

post-24-0-29071600-1360660873_thumb.png

 

**********************************************

 

EDIT:

 

I co poradził sobie kolega z FileWatcherWindowsService?

 

1. Umieszczasz w konkretnym miejscu katalog z plikami FileWatcherWindowsService, edytujesz skrypt .bat. w nim sa zapisane przykładowe ścieżki, więc polecisz według przykładu albo musisz edytować i zmienić ścieżki:

 

post-24-0-27065700-1360680308_thumb.png

 

2. Sprawdzasz czy usługa jest zainstalowana w panelu Usług, ale nie uruchamiasz jej. Następnie wracasz do katalogu z FileWatcherWindowsService i edytujesz plik konfiguracyjny:

FileWatcherWindowsService.exe.config

 

Podlikowujesz w nim 3 ważne pliki:

fwatcher.xml

fwatcher.xsd

fwatcher.log

 

post-24-0-09406100-1360681469_thumb.png

 

To są pliki konfiguracyjne File Watcher Simple odpowiedzialne za "przetrzymywanie" i konfigurację zadań "profili", które stworzyłeś. Podlinkowujesz czyli podajesz dokładną ścieżkę plików w katalogu File Watcher Simple.

FileWatcherWindowsService musi wiedzieć z czego ma korzystać w innym przypadku nie będzie widział ścieżek i program się zatrzyma.

 

3. Panel usług. Jeśli chcesz by Twoje uruchomione zaplanowane zachowania czyli uruchomienie określonego programu z parametrami były widoczne to w karcie "logowanie" zaptaszkowujesz opcję "Zezwalaj usłudze na współdziałanie z pulpitem" z innym ustawianiem mogą zostać uruchomione w tle.

 

post-24-0-54177100-1360680818_thumb.png

 

Następnie cofasz się do karty "Ogólne" i ustawiasz tryb uruchamiania, skoro usługa to automatyczny.

 

4. Uruchumiane programy poprzez FileWatcherSimple zostaną uruchomione zgodnie z tym samym kontem na którym jest uruchamian główny program. Nie wiem co chcesz uruchamiać, ale byłym ostrożny. Więc w FileWatcherSimple przechodzisz do karty Process Advanced i poniżej zaptaszkowujesz opcje "Load user profile" i następnie wpisujesz nazwę konta z którego programy maja być uruchamiane.

 

5. FileWatcherSimple. Karta Tools -> option -> Applications zaptaszkowujesz pozycję:

"Start all enabled file watchers at startup"

 

Process bat file mam ustawiony na 1, gdy ustawiałem większe wartości notatnik w procesach nie zakańczał się sam, w tedy zatrzymwanie usługi miało pewne problemy, bo mechanizm próbował zatrzymać usługę a notatnik współdziałał z FileWatcherSimple więc powstawała pętla i usługa nie chciała się zastopować. Zresztą w dokumentacji programu jest opisane że mogą wystapić problemy podczas zatrzymywania usługi przy wyłączeniu komputera także najlepiej ustawić na 1 (tak mi się wdaje)

 

 

Filmik z działaniem:

post-24-0-70353100-1360682333_thumb.gif

Edytowane przez KolegaDudysa
Odnośnik do komentarza

Jeszcze sobie ze wszystkim nie poradziłem, ale zaniedługo będę kończył. W tej chwili finalizuję trzy osobne akcje (daemony) FWS. W zasadzie już tylko drobne poprawki w batchach i zastąpienie programu do zmieniania nazw plików kilkoma linijkami kodu. Więc myślę, że dziś zrobię poprawki, przetestuję, a jutro zawalczę z ustawieniem jako usługa. Bo zdalnie się da, ale restarty się czasem nie udają. Ostatnio kliknąłem shutdown zamiast restart i do rana nie miałem serwera :)

 

Więc jutro skrobnę więcej

 

Edit: No to skrobię. Samo włączenie usługi nie stanowiło problemu. Natomiast zmuszenie jej do działania - to odrębny temat. W dwóch słowach napiszę po co mi to wszystko - pierwotnie zadanie miało realizować tylko prostą kwestię - zmieniać nazwy generowanych przez sieciowy skaner plików do bardziej przyjaznych. Potem się pojawiła koncepcja zezłomowania biurowego faksu i przejęcie jego zadań przez modem w serwerze. W efekcie teraz skany się same ładnie "przezywają", podobnie jak faksy, a te ostatnie dodatkowo jeszcze się przesyłają mailem do odbiorców.

 

Kwestie detekcji pojawiających się plików załatwia tytułowy File Watcher Simple w wersji GUI (wygodnie do ustawiania parametrów) i wersji "usługa" do codziennej pracy. Sprawy związane z przemianowywaniem plików początkowo realizowałem jakimś programikiem (AntRenamer) wywoływanym z linii poleceń, ale był on dość uciążliwy w obsłudze i mocno zbugowany.

 

W efekcie napisałem proste własne batche. Okazało się, że za proste. Batche działały np od 10 rano do północy, bo nie przewidziałem, że format czasu jak jest jednocyfrowa godzina to zamiast zera windows wstawia spację i inne podobne drobiazgi.

 

Potem się pojawiły kolejne problemy - batche chodziły jak miód dopóki ich obsługi nie przekazywałem do "usługi". Wtedy się zaczynały schody.

1) W kilku miejscach batchów zostawiałam na czas testowania krótkie przerwy w działaniu z możliwością puszczenia dalej z klawisza - a to wywoływało zaskakujące mnie okienko "Wkrywanie Usług Interakcyjnych"

2) Nie mogłem ogarnąć uprawnień uruchamiania usługi - na uprawnieniach usługi lokalnej w zasadzie nie działało nic. W końcu przypisałem usłudze uprawnienia admina. Może w wolnej chwili zrobię specjalnie dla usługi użytkownika o ograniczonych upraw. i dopiszę go do udziałów i zabezpieczeń.

3) Nawet teraz przemianowanie raz działało a raz nie. Okazało się, że pliki wykrywane przez FWS są zalockowane dopóki skaner ich nie odblokuje. Jak już to odkryłem to dałem opóźnienie w odpowiedniej zakładce FWS i kilka powtórzeń na wszelki wypadek.

 

Teraz już wszystko wygląda OK. Ale sprawdzimy w praniu.

 

Do mailowania otrzymanych faksów użyłem czegoś co się nazywa blat. Programik mały, zgrabny, obsługiwany z linii poleceń. Dla mnie oczywiście kosmicznie trudny w konfiguracji, ale w końcu zmusiłem go do wysyłania w dobrym kodowaniu maila, nawet z załącznikiem. Nie udało mi się tylko... hmm... tak załaczyć obraz, żeby był widoczny w treści maila, oraz linka do lokalizacji pliku tak, żeby lokalizacja pliku się "pokreślała" jako link. Ale to już drobiazgi mało istotne w tym momencie.

 

Pozdrawiam i dziękuję za pomoc.

 

PS. Niestety, nierozwiązany pozostał problem wysyłania faksów:

https://www.fixitpc.pl/topic/16224-fax-udostepniony-na-win764-nie-chce-sie-dodac-do-drukarek-visty32/

Chwilowo podłączyłem jakiegoś laptopa z modemem do telefonu, ale wolałbym jednak, żeby można było "usieciowić" faksa serwerowego.

Odnośnik do komentarza

2) Nie mogłem ogarnąć uprawnień uruchamiania usługi - na uprawnieniach usługi lokalnej w zasadzie nie działało nic. W końcu przypisałem usłudze uprawnienia admina. Może w wolnej chwili zrobię specjalnie dla usługi użytkownika o ograniczonych upraw. i dopiszę go do udziałów i zabezpieczeń.

 

sc config /?
sc config NazwaUsługi obj= .\username password= hasło
group=

Odnośnik do komentarza

sc config /?
sc config NazwaUsługi obj= .\username password= hasło
group=

To jest chyba to samo co w panelu usług - wybieram usera i 2 x hasło. Do tego trzeba nadać odpowiednie uprawnienia katalogom. A wcześniej dobrze to przemyśleć.

 

Editka: OK, dałem usłudze logowanie użytkownika dedykowanego do skanera/faksu, który miał już wcześniej uprawnienia ograniczone do kilku katalogów. Po restarcie serwera wszystko działa jak mjut. Temat możemy zamykać. Uprzejmie dziękuję :)

Odnośnik do komentarza
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...