2

我一直在写这个备份脚本。该脚本的目标是:

  1. 唤醒 LAN 上的睡眠 PC

  2. 运行 Microsofts 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 回答