0

这是我第一次在这里发帖,所以我会尽力而为。基本上我想在插入时自动备份我的USB,我现在设置的是三个文件,backup.bat,silent backup.vbs,和backup watch.bat

备份.bat

@echo off
Set _TS=        
Set _Source=C:\NMIT
Set _Dest=I:\Users\The Beast\SkyDrive\School\NMIT
Set _Log=I:\Users\The Beast\Documents\NMIT USB Backup Log.txt
robocopy "%_Source%" "%_Dest%" /E /ZB /B /V /PURGE /LOG:"I:\Users\The Beast\Documents\NMIT USB Backup Log.txt"
echo Backup complete, please remove USB
pause

静默备份.vbs

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "I:\Users\The Beast\Desktop\testing bat\backup watch.bat" & Chr(34), 0
Set WshShell = Nothing

备份watch.bat

@echo off

    IF EXIST "C:/NMIT" call "I:\Users\The Beast\Desktop\testing bat\backup.bat"

一切正常,运行,复制新文件,写入日志文件,由于我在网上找到的 vbs scipt,它也可以静默运行,唯一的问题是我不知道它是否完成备份,脚本运行每个5 分钟的任务调度程序。我想要做的是让监视脚本静默运行,但在备份完成时显示通知。我想最简单的方法是编辑 backup.bat 以包含回声和暂停,但如果我现在这样做它是不可见的,那么我怎样才能让监视脚本静默运行,但备份脚本运行正常?谢谢大家,我希望我的帖子描述性足够。

4

1 回答 1

0

要创建通知,notify.bat请在同一目录中创建一个名为的新文件:

@echo off
cls
set seconds=5
echo Backup complete, please remove USB
ping -n %seconds% 127.0.0.1 > NUL 2>&1
exit 0

现在将您的Backup.bat脚本更改为:

@echo off
Set "_TS="        
Set _Source=C:\NMIT
Set _Dest=I:\Users\The Beast\SkyDrive\School\NMIT
Set _Log=I:\Users\The Beast\Documents\NMIT USB Backup Log.txt
robocopy "%_Source%" "%_Dest%" /E /ZB /B /V /PURGE /LOG:"I:\Users\The Beast\Documents\NMIT USB Backup Log.txt"
start notify.bat

当通过 vbs 文件调用该脚本时,该Backup.bat脚本将被隐藏,但 notify.bat 将是可见的,因为它是从 bat 文件中调用的。

另外,一个小技巧,要在引号内转义引号,请使用双引号。看起来Silent backup.vbs像:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run """I:\Users\The Beast\Desktop\testing bat\backup watch.bat""", 0
Set WshShell = Nothing
于 2012-05-04T05:40:17.870 回答