在 Robocopy 之前退出程序的脚本

在 Robocopy 之前退出程序的脚本

我正在为客户设置一个备份脚本,该脚本将安排每月运行一次,以将他的 200GB iTunes 目录备份到他的 NAS。它是使用一些定义的参数和编译的ROBOCOPY %_source% %_dest% %_what% %_options%。我如何在该脚本的开头添加一些内容以在 Robocopy 任务之前退出所有打开的应用程序?

我可以使用 taskkill.exe,但我担心如果当时正在运行,可能会损坏一些 iTunes 文件。有没有一种干净的方法可以退出所有内容?

答案1

据我所知,批处理脚本无法实现温和关闭,你最好使用 vbscript 来关闭 iTunes

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

这应该可以实现你想要的效果。

然后使用

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

打开您的复制批处理文件或直接从 vbs 文件中使用 robocopy(我知道可以做到但我不知道如何做)

如果你使用批处理文件,你可以使用

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 关闭时复制

答案2

基于页面,看起来taskkill应该可以工作。

taskkill /IM itunes.exe

我尝试在几个程序(记事本、ide、音乐播放器)上进行操作,它们要么正常关闭,要么弹出确认对话框。

相关内容