2012-10-17 33 views
2

我在Windows Server是應該得到一個網絡位置(映射驅動器)的一些文件,並將其複製到本地文件夾中準備一個FTP同步2003 R2計劃任務到當天晚些時候移動設備。計劃任務蝙蝠 - 檢查網絡驅動器準備

的任務,當我點擊並運行它運行沒有問題。任務計劃程序表示它正在運行更新其運行時間並且文件顯示在正確的位置。然而...

當任務應該運行在晚上(和我尚未登錄)任務運行(任務調度指示任務在指定時間運行),但不會出現文件副本。我懷疑這與登錄帳戶的任務有關,然後在網絡驅動器連接並準備就緒之前運行文件副本。

下面是批處理文件我的代碼:

@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,繼續下一個指令?

一些答案預期問題: - 網絡驅動器盤符不會改變。 - 使用計劃任務登錄的帳戶與我可以成功運行該任務的帳戶相同。 - 任務實際運行(記錄在任務計劃程序中),但沒有證據顯示文件副本已執行。

在此先感謝。

回答

3

你可以刪除映射驅動器,並嘗試再次映射它,然後等到ERRORLEVEL表明它是繼續之前連接。

@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 
+0

感謝巴厘島C.已經嘗試過這種解決方案,並在退出時運行測試,它似乎工作。如果隔夜劇本再次失敗,會回來。 – Barbs