Muszę skonfigurować jakiś skrypt na moim komputerze z systemem Vista, aby za każdym razem, gdy plik został dodany do określonego folderu, automatycznie uruchamiał proces działający w tle na pliku. (Proces w tle to po prostu narzędzie wiersza polecenia, które przyjmuje nazwę pliku jako argument, wraz z kilkoma innymi predefiniowanymi opcjami).
Chciałbym to zrobić przy użyciu natywnych funkcji systemu Windows, jeśli to możliwe, ze względu na wydajność i konserwację. Zastanawiałem się nad użyciem Harmonogramu zadań, ale po pewnym czasie przestudiowania systemu wyzwalania nie byłem w stanie zrozumieć go zbyt dobrze i nawet nie jestem pewien, czy jest on w stanie zrobić to, czego potrzebuję.
Byłbym wdzięczny za wszelkie sugestie. Dzięki!
windows
windows-vista
automation
scheduled-tasks
bigmattyh
źródło
źródło
Odpowiedzi:
W pracy używamy Powershell do monitorowania folderów.
Można go używać od czasu zainstalowania systemu Windows Vista (.NET i PowerShell) bez żadnych dodatkowych narzędzi.
Ten skrypt monitoruje określony folder i zapisuje plik dziennika. Możesz zastąpić akcję i zrobić, co chcesz, np. Wezwać narzędzie zewnętrzne
Przykładowy plik dziennika
StartMonitoring.ps1
Jak używać
$watcher.Path = "D:\source"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
StartMonitoring.ps1
Aby zatrzymać monitorowanie, wystarczy zamknąć okno PowerShell
Dalsza lektura
źródło
StartWatching.ps1
okno, aby zatrzymać monitorowanie. Drugi skrypt działa tylko jeśli zawierają go w swoim pierwszym scenariuszem, aby zapisać zmienne$created
,$changed
,$deleted
lub$renamed
Wygląda na to, że masz właściwe linie - możesz użyć harmonogramu zadań do regularnego uruchamiania pliku .bat lub .cmd, a plik ten może zaczynać się od linii sprawdzającej istnienie wymaganego pliku - w rzeczywistości ja sprawdził, czy plik nie istnieje; na przykład:
Możesz również zmodyfikować ten kod i uruchomić go w pętli z, powiedzmy, 1-minutowym opóźnieniem w pętli, a następnie umieścić odniesienie do pliku wsadowego w folderze startowym systemu Windows:
Istnieją inne sposoby osiągnięcia opóźnienia w zależności od wersji systemu Windows i zainstalowanych dodatkowych zestawów zasobów, ale polecenie PING działa właściwie we wszystkich okolicznościach. W powyższym poleceniu PING 10 fantomowych PINGÓW jest wykonywanych z opóźnieniem 6000ms (tj. 6 sekund) między nimi, możesz grać tymi wartościami, aby osiągnąć potrzebne opóźnienie między pętlami plików wsadowych.
źródło
-n 10
VS-n 1
.IF NOT EXIST C:\NO_SUCH_FILE_EVER.foo
. Hackish, ale działa. Dzięki za pomysł.Dzięki wszystkim za sugestie.
Skończyło się na tym, że napisałem VBScript, który w przybliżeniu opierał się na pomyśle Linker3000 o sondowaniu folderu i użyciu Harmonogramu zadań, aby uruchomić go podczas uruchamiania. Ostatecznie otrzymałem podstawową składnię z tego zasobu i wprowadziłem wymagane poprawki.
Nadal chciałbym go zoptymalizować w pewnym momencie, mając wnętrzności skryptu w systemie sterowanym zdarzeniami, ale zabrakło mi czasu na pracę nad nim, i, cóż, to wystarczy.
Oto skrypt, na wypadek, gdyby ktoś był zainteresowany (z nieistotnym segmentem konwersji zredagowanym dla przejrzystości):
(Nie chcę też pozostawiać tego pytania oficjalnie bez odpowiedzi - i nienawidzę przyjmować własnej odpowiedzi na to pytanie - ale podziękowałem za odpowiedź Linker3000!)
źródło
Możesz spojrzeć na DropIt (bezpłatny). Program nadaje się do przetwarzania plików przychodzących na kilka zautomatyzowanych sposobów. Możesz przenosić, kopiować, usuwać i przekazywać parametry do innych programów wiersza poleceń w celu konwersji obrazów, dzielenia plików PDF itp.
źródło
Jeśli akcja polega tylko na skopiowaniu zmienionych plików, możesz użyć robocopy / MON
Nie wiem, czy robocopy korzysta z FileSystemWatcher lub działa poprzez odpytywanie o zmiany
źródło
Lub możesz użyć Watch 4 Folder . Najwyraźniej jest darmowy, przenośny i kompatybilny z Windows 7. Nie wypróbowałem go, ale znalazłem go w wyszukiwarce i pomyślałem, że go przekażę.
Podoba mi się również skrypt VBS, również dostępny na stronie.
źródło
Znalazłem również stróża, który wydaje się być dość duży, i mniejszego watchexec, którego nie próbowałem.
źródło
Używamy do tego celu komercyjnego narzędzia (tj. Nie jest to bezpłatne) Ankieta dotycząca folderu z http://www.myassays.com/folder-poll . Jest to aplikacja Windows, która zawiera przyjazną dla użytkownika aplikację menedżera, która umożliwia łatwą konfigurację. Istnieje również opcja konfiguracji XML. Rzeczywiste odpytywanie folderów działa jako usługa systemu Windows (więc uruchamia się automatycznie przy każdym ponownym uruchomieniu). Po wykryciu nowego pliku w folderze odpytywanym aplikacja może zostać uruchomiona automatycznie (możesz podać własne niestandardowe argumenty wiersza poleceń). Może także wykonywać inne czynności, takie jak kopiowanie / przenoszenie plików. Ponadto aktywność można zarejestrować w pliku dziennika i istnieją inne zaawansowane operacje.
źródło