Войти

Показать полную графическую версию : [решено] зависает robocopy


Опиум
08-10-2014, 17:08
фрагмент скрипта:
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
то все отрабатывается.

Iska
08-10-2014, 17:25
Опиум, у Вас «SrcDir» и «DstDir», надо полагать, не пустые? Покажите их задание.

Опиум
08-10-2014, 17:33
нет, они не пустые и контрольно перед запуском отображаются. я же написал.

суть в том что копировании начинается корректно... но виснет.

Iska
08-10-2014, 17:38
Опиум, если Вам не трудно — Вы не могли бы читать меня полностью:
Покажите их задание. »
!?

Я видел, что Вы написали. Но что именно у Вас отображается «контрольно», какие именно несколько файлов копирует, на каком файле «виснет», как именно Вы определяете, что несколько файлов копирует, что именно «виснет» — знаете пока только Вы.

Опиум
08-10-2014, 17:51
тестировал скрипт на папках с фотками. много jpg файлов размером 2-5мб.
несколько файлов копируется в DstDir... и сразу видно на каком завис - jpg открывается с ошибкой.
процесс robocopy висит, ресурсов cpu не потребляет, копирование не идет.

Сейчас удивился, на w7 отработал, а на w2008r2 виснет.

Покажите их задание »
непокажу) потому что оно громоздко и не суть.
если robocopy c этими параметрами не запускать из скрипта, а копипастнуть руками в cmd то все отработает.

Iska
08-10-2014, 18:03
Продолжайте «копипастить в cmd» и дальше, коль «оно громоздко и не суть», и Вам сложно скопировать сие сюда. Как скажете.

Опиум
08-10-2014, 18:17
загрузил скриншот. там видно src и dst папки.
в dst виден файл на котором завис robocopy (DSC_0215.JPG)

Опиум
09-10-2014, 09:55
короче. той инфо что давал вам было достаточно. разобрался сам. дело в выводе.
перенаправил все в лог файл и все заработало.
ключи robocopy /np /log+:

Iska
09-10-2014, 15:32
Дело не в выводе, а в отсутствии чтения из внутренних буферов для потоков вывода и ошибок в Вашем скрипте: Hang When Reading StdErr/StdOut Properties of WshScriptExec Object (http://support.microsoft.com/kb/960246).

Опиум
09-10-2014, 15:46
Iska, все верно. нет вывода - нет проблемы. Я так решил, хотя, как указано по ссылке, можно было просто вычитывать буфер.

Iska
09-10-2014, 16:00
Опиум, нет-нет, всё нормально: выбранный Вами обходной путь вполне возможен, если приемлем для Вас. Главное, что Вы самостоятельно нашли причину подвисания.




© OSzone.net 2001-2012