Я устанавливаю сценарий резервного копирования для клиента, который будет запускаться раз в месяц для резервного копирования его каталога iTunes объемом 200 ГБ на его NAS. Он скомпилирован с использованием некоторых определенных параметров и ROBOCOPY %_source% %_dest% %_what% %_options% . Как я могу добавить что-то в начало этого скрипта, чтобы закрыть все открытые приложения перед задачей Robocopy?

Я мог бы использовать taskkill.exe, но я обеспокоен тем, что это может повредить некоторые файлы iTunes, если он работает в то время. Есть ли чистый способ бросить все?

2 ответа2

0

Насколько я знаю, пакетные скрипты не способны к легкому закрытию, было бы лучше использовать vbscript, чтобы закрыть использование itunes

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

Это должно делать то, что вы хотите.

Тогда используйте

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

чтобы открыть свой пакетный файл копии или использовать robocopy из файла VBS напрямую (я знаю, что это можно сделать, но я не знаю, как)

Если вы используете командный файл, вы можете использовать

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

сделать копию только когда itunes закрыт

0

Исходя из этой страницы, кажется, что taskkill должен работать.

taskkill /IM itunes.exe

Я попробовал это на нескольких программах (блокнот, ide, музыкальный проигрыватель), и все они либо выключились должным образом, либо вызвали диалог подтверждения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .