2

私が書いているこのバックアップ スクリプトに行き詰まっています。スクリプトの目的は次のとおりです。

  1. LAN 上のスリープ状態の PC をウェイクアップする

  2. Microsoft Synctoy(cmd バージョン) を実行して、セットアップしたすべてのペア フォルダーを同期し、結果をログ ファイルに出力します。

  3. エラーが発生した場合は、ログ ファイルに書き込まれ、mailsend.exe 経由でメールが送信されます。

バッチ ファイルは、Windows 7 のスケジュールされたタスクで毎晩実行するように設定されています。

バッチファイルの内容:

    @ECHO OFF
    SET /a RETRY=0
    SET /a RETRIES=5
    SET MAC=000c76******
    SET IP=192.168.0.8
    SET SUBNET=255.255.255.0
    SET PORT=7

    ECHO %date% - %time% - Started sync.

    :CHECK
    PING -n 1 %IP% | find "bytes=">NUL
    IF %ERRORLEVEL%==0 (
    GOTO SYNC
    )
    IF %ERRORLEVEL%==1 (
    GOTO WAKE
    )

    :WAKE
    SET /a RETRY=%RETRY%+1
    IF %RETRY% GEQ 6 (
    SET ERR_VAL=RETRY
    GOTO ERROR
    )
    ECHO Waking up \\NAS Attempt %RETRY%\5...
    START C:\sync\wolcmd.exe %MAC% %IP% %SUBNET% %PORT%
    timeout /T 30 /NOBREAK>NUL
    GOTO CHECK

    :SYNC
    ECHO SyncToy is running...
    "C:\Program Files\SyncToy 2.1\SyncToyCmd.exe" -R>C:\sync\synctoy_log.txt
    IF %ERRORLEVEL% == 0 (
    ECHO %date% - %time% - Success: Sync completed.>>C:\sync\synctoy_error_log.txt
    GOTO END
    ) ELSE (
    SET ERR_LEV=%ERRORLEVEL%
    SET ERR_VAL=SYNC
    GOTO ERROR
    )

    :ERROR
    IF %ERR_VAL%==RETRY (
    ECHO Error: Failed to sync, retries exceeded.
    ECHO %date% - %time% - Error: Failed to sync, retries exceeded.>>C:\sync\synctoy_error_log.txt
    )
    IF %ERR_VAL%==SYNC (
    ECHO Error: SyncToy error (%ERR_LEV%).
    ECHO %date% - %time% - Error: SyncToy error (%ERR_LEV%).>>C:\sync\synctoy_error_log.txt
    )
    START C:\sync\mailsend.exe -to example.email@googlemail.com -from example.email@gmail.com -ssl -attach synctoy_error_log.txt,text/plain,i -smtp smtp.googlemail.com -port 465 -sub SyncToy_log +cc +bc -v -auth-login -user example.email@gmail.com -pass examplepass
    GOTO END

    :END
    EXIT

synctoy_error_log.txt の内容

    18/02/2013 -  6:02:16.40 - Success: Sync completed.
    20/02/2013 -  6:05:25.71 - Success: Sync completed.
    21/02/2013 -  6:07:14.27 - Success: Sync completed.
    22/02/2013 -  6:02:56.34 - Success: Sync completed.
    24/02/2013 -  6:01:49.97 - Success: Sync completed.
    25/02/2013 -  6:01:35.14 - Success: Sync completed.

ご覧のとおり、ログが書き込まれていない日が数日あります。スケジュールされたタスクが実行されている PC と、ウェイクアップしたい PC は、この時点でアクセス可能になっているはずです。

ここでエラーチェックなどで間違っていることはありますか?

問題があったというメールも届きませんが、スリープ状態の PC を LAN から切断し、スクリプトを強制的に起動すると、起動できなかったというメールが届きます。

あなたが私に与えることができるアドバイスをありがとう、それは非常に感謝しています。これが最も効率的なスクリプトではないことはわかっていますが、できる限りのことをしようとしてきました。

4

1 に答える 1

0

スクリプトはどのアカウントでスケジュールされたタスクとして実行されますか?通常、ntアカウントシステムはネットワーク共有を使用できません。secpolでバッチタスクとしてログオンできるユーザーアカウントで実行してみてください。

于 2013-03-22T18:39:34.450 に答える