Skrypt do wyjścia z programu przed Robocopy

0

Konfiguruję skrypt kopii zapasowej dla klienta, który będzie uruchamiany raz w miesiącu, aby wykonać kopię zapasową katalogu iTunes o pojemności 200 GB na swoim serwerze NAS. Jest kompilowany przy użyciu niektórych zdefiniowanych parametrów i ROBOCOPY %_source% %_dest% %_what% %_options%. Jak mogę dodać coś na początku tego skryptu, aby zamknąć wszystkie otwarte aplikacje przed zadaniem Robocopy?

Mógłbym użyć taskkill.exe, ale obawiam się, że może uszkodzić niektóre pliki iTunes, jeśli są uruchomione w tym czasie. Czy istnieje czysty sposób na porzucenie wszystkiego?

Reece
źródło

Odpowiedzi:

0

O ile wiem, skrypty wsadowe nie są w stanie delikatnie zamykać, lepiej byłoby użyć vbscript do zamknięcia korzystania z iTunes

Set objitunes = CreateObject("Itunes.Application")
objItunes.quit

To powinno zrobić, co chcesz.

Następnie użyj

CreateObject("WScript.Shell").Run("""C:\myfile.bat""")

aby otworzyć kopię pliku wsadowego lub użyć robocopy bezpośrednio z pliku vbs (wiem, że można to zrobić, ale nie wiem jak)

Jeśli używasz pliku wsadowego, możesz użyć

tasklist /FI "IMAGENAME eq itunes.exe" 2>NUL | find /I /N "itunes.exe">NUL
if "%ERRORLEVEL%"=="1" robocopy C:\your\folder\ N:\your\other\folder /mir

aby kopiować tylko wtedy, gdy iTunes jest zamknięty

Niteshadow
źródło
Nie jestem zbyt dobry w VBS. Kiedy wypróbowuję twoją sugestię, pojawia
Reece
Proszę zamieścić swój aktualny plik vbs, a także o tym, które okna aktualnie używasz.
niteshadow
Również skoro robisz to dla innej osoby, czy byłoby możliwe przesłanie im pliku vbs z pierwszym blokiem kodu i sprawdzenie, czy to działa dla nich?
niteshadow
Właśnie utworzyłem plik .vbs na pulpicie z zawartością Set objiTunes = CreateObject("iTunes.Application") objiTunes.quit CreateObject("WScript.Shell").Run("""C:\BACKUP-SCRIPTS\3d-FileSync.bat"""). Używam 64-bitowego systemu Windows 7. I 64-bitowy iTunes. Kontrola konta użytkownika jest wyłączona.
Reece
W porządku, używam Windows 8, więc sprawy mogą się nieco różnić, ale udało mi się zduplikować błąd w moim systemie. Wydaje się, że dzieje się tak, gdy aplikacja nie istnieje, a po przejściu do wyszukiwarki wygląda na to, że coś nie zostało poprawnie zarejestrowane po zainstalowaniu iTunes i instalacja naprawcza może to naprawić, ale jak już wspomniałem wcześniej, ponieważ nie będziesz używać tego skryptu, powinien wysłać blok objitunes.quit do klienta i sprawdzić, czy to działa.
niteshadow
0

Na podstawie tej strony wydaje się, że taskkillpowinna działać.

taskkill / IM itunes.exe

Wypróbowałem to na kilku programach (notatnik, ide, odtwarzacz muzyki) i wszystkie one odpowiednio się zamknęły lub otworzyły okno dialogowe potwierdzenia.

Shazvi
źródło