计划任务.bat - 检查网络驱动器是否准备就绪

时间:2012-10-17 00:43:05

标签: windows networking batch-file task drive

我在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时,继续执行下一条指令?

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

提前致谢。

1 个答案:

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