2

我在 Windows Server 2003 R2 中有一个计划任务,它应该从网络位置(映射驱动器)获取一些文件并将它们复制到本地文件夹,以便当天晚些时候将 FTP 同步到移动设备。

当我单击它并运行它时,任务运行没有问题。任务计划程序说它正在运行更新它运行的时间并且文件出现在正确的位置。然而...

当任务应该在夜间运行(并且我尚未登录)时,任务会运行(任务调度程序指示任务在指定时间运行)但不会发生文件复制。我怀疑这与登录帐户的任务有关,然后在网络驱动器连接并准备好之前运行文件副本。

这是批处理文件中的代码:

@echo off

FORFILES /p "K:\Oncology\BSWRICS-MDM" /s /m *.* /c "cmd /c Del @path" /d -30

set "cleanup=K:\Oncology\BSWRICS-MDM"

for /f "usebackq tokens=*" %%a in (`dir /b/s/ad "%cleanup%" ^| sort /r`) do (rmdir "%%~a" 2>nul && echo:Removed: "%%a")

xcopy  K:\Oncology\BSWRICS-MDM\*.* C:\wamp\www\Portal\files\BSWRICS-MDM /Y /S 

FORFILES /p "C:\wamp\www\Portal\files\BSWRICS-MDM" /s /m *.* /c "cmd /c Del @path" /d -30

前几行从本地文件夹中删除超过 30 天的文件,然后发生 xcopy。正如我所说,当我第一次登录时,这个脚本可以完美运行。

我可以在开始时插入一些代码来让脚本检查网络驱动器是否准备好,并且只有在 TRUE 时才继续执行下一条指令?

预期问题的一些答案: - 网络驱动器号永远不会改变。- 使用计划任务登录的帐户与我可以成功运行任务的帐户相同。- 任务实际运行(登录到任务计划程序),但没有证据表明已执行文件复制。

提前致谢。

4

1 回答 1

3

您可以删除映射的驱动器并尝试再次映射它,然后等到错误级别显示它已连接后再继续。

@echo off
:LOOP
net use Y: /delete
net use Y: \\server\share
if errorlevel 1 (
goto :ERROR
) else (
goto :OK
)

:ERROR
echo ERROR!
rem Try again!
timeout /t 5
goto :LOOP

:OK
echo OK!
rem Carry on!
pause >nul
于 2012-10-17T08:42:11.210 回答