0

ここに投稿するのは初めてなので頑張ります。基本的に、USB が差し込まれたときに自動的にバックアップしたいのですが、現時点で設定しているのは、backup.bat、silent backup.vbs、および backup watch.bat の 3 つのファイルです。

バックアップ.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

スクリプトはBackup.batvbs ファイルから呼び出されると非表示になりますが、notify.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 に答える