Показать полную графическую версию : [решено] зависает robocopy
фрагмент скрипта:
Set WshShell = WScript.CreateObject("WScript.Shell")
Wscript.echo "robocopy /mir /MOVE /r:1 /w:1 /xj " & SrcDir & " " & DstDir
set robojob=WshShell.Exec("robocopy /mir /MOVE /r:1 /w:1 /xj " & SrcDir & " " & DstDir)
While robojob.status=0
Wscript.sleep (500)
Wend
робокопи начинает выполнятся, копирует несколько файлов и зависает. Скрипт запускал хоть под wscript хоть cscript...
если ручками копипастнуть в cmd вывод Wscript.echo "robocopy /mir /MOVE /r:1 /w:1 /xj " & SrcDir & " " & DstDir
то все отрабатывается.
Опиум, у Вас «SrcDir» и «DstDir», надо полагать, не пустые? Покажите их задание.
нет, они не пустые и контрольно перед запуском отображаются. я же написал.
суть в том что копировании начинается корректно... но виснет.
Опиум, если Вам не трудно — Вы не могли бы читать меня полностью:
Покажите их задание. »
!?
Я видел, что Вы написали. Но что именно у Вас отображается «контрольно», какие именно несколько файлов копирует, на каком файле «виснет», как именно Вы определяете, что несколько файлов копирует, что именно «виснет» — знаете пока только Вы.
тестировал скрипт на папках с фотками. много jpg файлов размером 2-5мб.
несколько файлов копируется в DstDir... и сразу видно на каком завис - jpg открывается с ошибкой.
процесс robocopy висит, ресурсов cpu не потребляет, копирование не идет.
Сейчас удивился, на w7 отработал, а на w2008r2 виснет.
Покажите их задание »
непокажу) потому что оно громоздко и не суть.
если robocopy c этими параметрами не запускать из скрипта, а копипастнуть руками в cmd то все отработает.
Продолжайте «копипастить в cmd» и дальше, коль «оно громоздко и не суть», и Вам сложно скопировать сие сюда. Как скажете.
загрузил скриншот. там видно src и dst папки.
в dst виден файл на котором завис robocopy (DSC_0215.JPG)
короче. той инфо что давал вам было достаточно. разобрался сам. дело в выводе.
перенаправил все в лог файл и все заработало.
ключи robocopy /np /log+:
Дело не в выводе, а в отсутствии чтения из внутренних буферов для потоков вывода и ошибок в Вашем скрипте: Hang When Reading StdErr/StdOut Properties of WshScriptExec Object (http://support.microsoft.com/kb/960246).
Iska, все верно. нет вывода - нет проблемы. Я так решил, хотя, как указано по ссылке, можно было просто вычитывать буфер.
Опиум, нет-нет, всё нормально: выбранный Вами обходной путь вполне возможен, если приемлем для Вас. Главное, что Вы самостоятельно нашли причину подвисания.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.