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 に答える