静默运行一个批处理文件,另一个正常运行,用于USB自动备份

时间:2012-05-03 05:53:34

标签: batch-file usb robocopy

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

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"
echo Backup complete, please remove USB
pause

Silent backup.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以包含回显和暂停,但如果我现在这样做它是不可见的,那么如何让监视脚本运行无声,但备份脚本运行正常?谢谢大家,我希望我的帖子足够描述。

1 个答案:

答案 0 :(得分: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