|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] отказ доступа при использовании команды Move |
|
CMD/BAT - [решено] отказ доступа при использовании команды Move
|
Ветеран Сообщения: 1002 |
Добрый день коллеги, у меня к вам такой вопрос.
Столкнулся с проблемой: на выходе получаю папку Folder в папке откуда запущен скрипт и папку folder2 в папке c:\temp при использовании команды : получаю отказано в доступе Структура папки folder2: если же использовать: команда: срабатывает на ура. Копирует только содержимое папки folder2 без подкаталогов находящихся в ней, что не есть гуд |
|
------- Отправлено: 09:47, 06-03-2009 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата kero:
Цитата kero:
Она не может даже перемещать папки по конструкции *.* (или просто *). Конструкция *.* в случае MOVE относится только к файлам, если вместе с файлами находятся ещё и папки, то они не будут затронуты перемещением, и команда RD в моём примере не сработает ("Папка не пуста."). Но команда MOVE может переименовывать (!) и файлы, и папки при перемещении (в отличие от команды COPY, которая не работает с папками и может переименовывать только файлы при копировании). kero, в Вашем случае лучше использовать команду XCOPY. XCOPY /E /H /I /Y Imya_Kopiruemoy_Papki Imya_Papki_V_Kotoruyu_Kopiruyut\Imya_Kopiruemoy_Papki RD /S /Q Imya_Kopiruemoy_Papki XCOPY /E /H /I /Y Imya_Kopiruemoy_Papki Imya_Papki_V_Kotoruyu_Kopiruyut\Novoe_Imya_Kopiruemoy_Papki RD /S /Q Imya_Kopiruemoy_Papki А для полного совершенствования копирования нужно использовать команду ROBOCOPY. Утилита Robocopy.exe входит в комплектацию ОС Windows, начиная с Windows Vista. |
||
Последний раз редактировалось Georgio, 18-04-2013 в 01:36. Причина: Небольшое дополнение Отправлено: 01:24, 18-04-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Georgio:
|
|
Отправлено: 02:45, 18-04-2013 | #12 |
Пользователь Сообщения: 129
|
Профиль | Отправить PM | Цитировать Georgio, спс за ответы.
Цитата Georgio:
А напишите какой нибудь пример ROBOCOPY с перемещением папки "АА1" и перезаписью ею существующей папки "ВВ1" (все они конечно с файлами) одной строкой. |
|
Последний раз редактировалось kero, 18-04-2013 в 16:45. Отправлено: 16:35, 18-04-2013 | #13 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата kero:
Примеры простого использования утилиты Robocopy. Пример 1. Параметры: /Z - копирование с возобновлением (старый файл будет заменятся новым, если у него другое содержимое и другая дата изменения) /TIMFIX - исправление атрибутов времени для файлов (в дополнение к /Z переписывается и дата создания для одинаковых файлов) /DCOPY:T - копирование меток времени для папок (дата создания, дата изменения) /MIR - зеркальное копирование (копируются все вложенные папки, включая пустые, и удаляются все файлы и папки назначения, которых не существует в источнике) /SL - копирование самих символических ссылок вместо копирования целевого объекта этих ссылок (на всякий случай, если таковые попадутся, чтобы не скопировать лишние гигабайты) /XJ - исключение из копирования точек соединения (также на всякиЙ случай - от них потом сложно избавлятся) /R:n - число повторных попыток для неудавшихся копий (по умолчанию - 1 миллион) /W:n - время ожидания между повторными попытками (по умолчанию - 30 секунд) Значения для параметров /R и /W (/R:4 /W:15) - мои личные, можно менять, но в пределах разумного. Объясняю. Если не выставлять эти параметры совсем, то по умолчанию 30 секунд x 1 000 000 = 30 000 000 секунд; натыкается процесс копирования на "файл, занятый другим процессом" и висит, пытаясь безрезультатно его скопировать в течении почти года (30 000 000 секунд = 347 суток!). С другой стороны, если выставить /R:0 /W:0, то если случится какой-нибудь системный или аппаратный сбой, он может вызвать ошибку копирования; например, захотел прилечь на диване вместе с ноутбуком, стал переносить его со стола, - отвалился внешний жёсткий диск, с которого или на который копируется. Большинство программ в таких случаях прекращают работу или виснут, а Robocopy с парамерами ожидания и повтора подождёт, пока вставится и запустится диск, и продолжит работу, исправив ошибку (минуты обычно хватает - 15 секунд x 4). Пример 2. Отличается от предыдущего одной буквой - параметр /ZB вместо /Z, но отличие существенное. С параметром /ZB также идёт копирование с возобновлением, но если доступ запрещен, используется режим архивации. Например, завёлся в папке System Volume Information вирус (в Windows XP это часто), антивирус его видит, а вытащить не может, - атрибуты безопасноти папки не позволяют, оценить угрозу надо, а "взламывать" папку (добавлять, менять разрешения доступа) в случае ложной угрозы как то не с руки. Используя команду с данными параметрами (можно, конечно, без /SL /XJ) делаем копию этой папки, но без атрибутов безопасности, и вирус можно отправлять на VirusTotal. Пример 3. Команда с такими параметрами не будет удалять файлы и папки, которых нет в источнике, а только добавлять новые и переписывать изменившиеся, то есть будет выполнять функцию коллектора. Пример 4. С добавлением параметра /MOV к остальным параметрам файлы будут перемещаться (копироваться и удаляться из источника), а папки оставаться на месте; если же добавить параметр /MOVE, то файлы будут перемещаться вместе с папками. ROBOCOPY AA1 BB1 /ZB /DCOPY:T /TIMFIX /MIR /SL /XJ /MOV /R:4 /W:15 ROBOCOPY AA1 BB1 /ZB /DCOPY:T /TIMFIX /MIR /SL /XJ /MOVE /R:4 /W:15 Пример 5. А с этими параметрами на выходе будет полная зеркальная копия (репликация) со всеми атрибутами, включая атрибуты безопасности (разрешения, владелец, аудит), но "файлы, занятые другим процессом" будут скопированы с нулевой длиной, то есть окажутся пустыми. *** Если описал десять процентов от возможностей утилиты Robocopy, то хорошо. А она может всё (или почти всё). Может копировать только выбранные атрибуты, не копируя сам файл, может исключать заданные файлы и папки (в т. ч. по маске) из копирования, может вести журнал... Думаю, что понятно, что вместо папок "AA1" и "BB1" надо вписывать их полные имена (в случае пробелов - в кавычках), если, конечно, BAT-файл не находится в одной директории с обеими папками. Параметры можно расставлять в любом порядке вслед за папками. |
|
Последний раз редактировалось Georgio, 19-04-2013 в 08:37. Причина: Исправление опечатки Отправлено: 08:12, 19-04-2013 | #14 |
Ветеран Сообщения: 717
|
Профиль | Отправить PM | Цитировать Похожая тема, как мне надо.
Суть вопроса в том,чтобы выполнить именно перемещение содержимого одной папки в другую. Подобно Ctrl-X Ctrl-V с подтверждением замены, в этом случае содержимое переносится мгновенно практически. Использование ROBOCOPY делает простое копирование а не перемещение и это занимает минут 10 в моей задаче, что есть слишком долго. Move может перемещать так как надо только файлы, с каталогами проблема, если есть совпадающие, получаем Отказано в доступе. Может есть доступное решение? |
Отправлено: 22:32, 07-08-2017 | #15 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать mariolast,
@Echo Off Set "BoxIn=Z:\Soft_In Set "DirIn=JS_Host" Set "BoxOut=Z:\Soft_Arc" xcopy /T /E /I /Y "%BoxIn%\%DirIn%" "%BoxOut%\%DirIn%" FOR /F "usebackq delims=" %%i IN (`xcopy /E /Y /I /L /F "%BoxIn%\%DirIn%\*.*" "%BoxOut%\%DirIn%"`) DO Call :AllMove "%%i" For /F "usebackq delims=" %%i In (`Dir "%BoxIn%\%DirIn%\*.*" /B /S /A:D 2^>nul^|Sort /R`) Do RD "%%i" 2>nul RD "%BoxIn%\%DirIn%" 2>nul GoTo :Eof :AllMove Set Twin=%1 Set Twin=%Twin: -> =" "% Move /Y %Twin% >nul 2>&1 GoTo :Eof |
------- Последний раз редактировалось megaloman, 08-08-2017 в 15:26. Отправлено: 14:07, 08-08-2017 | #16 |
Ветеран Сообщения: 717
|
Профиль | Отправить PM | Цитировать Похожим методом пробовал через ROBOCOPY, но это идет простое копирование, что по времени сильно удлиняет процесс, в то время как перемещение делает это практически мгновенно
|
Отправлено: 19:07, 08-08-2017 | #17 |
Старожил Сообщения: 160
|
Профиль | Отправить PM | Цитировать mariolast, Тоже периодически сталкиваюсь с необходимостью быстро перенести папку с тяжелыми файлами из одного места в другое с заменой. Не получилось у Вас найти доступное решение?
|
Отправлено: 17:32, 22-07-2021 | #18 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Shulzzz, Вы пробовали моё решение? Я его порядком забыл, но там нет копирования файлов, есть копирование структуры и перенос файлов. Однако, если перенос делается на разные диски (разделы диска) - это по любому будет долго. Мигом - в рамках одного диска. Проверил - работает! За 4 года решение не прокисло!
|
------- Последний раз редактировалось megaloman, 22-07-2021 в 18:44. Отправлено: 18:36, 22-07-2021 | #19 |
Старожил Сообщения: 160
|
Профиль | Отправить PM | Цитировать megaloman, Нет, не пробовал, обязательно попробую, перенос осуществляется в рамках одного и того же раздела, интересует именно скорость, сохранение структуры папок и файлов в них, и условие, что в целевой папке файлы с одинаковыми названиями должны именно заменяться(обновляться), а не прежде удаляться и на их место записываться новые, т.е. если в переносимой папке нет определенного файла, то в целевой папке старый такой файл должен оставаться на месте
|
Последний раз редактировалось Shulzzz, 23-07-2021 в 09:54. Отправлено: 00:36, 23-07-2021 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Debian/Ubuntu - [решено] Потеря данных при использовании команды halt | sgww | Общий по Linux | 4 | 02-12-2009 15:53 | |
Распространение программ с использованием групповой политики. Ошибка: отказ доступа | Zeratyl | Microsoft Windows NT/2000/2003 | 6 | 30-06-2008 20:47 | |
Доступ - Отказ доступа в папке Моя музыка | bl1nk | Microsoft Windows Vista | 3 | 23-04-2008 12:53 | |
[решено] Ошибка при использовании mysql_real_escape_string() | hasherfrog | Вебмастеру | 7 | 28-11-2007 14:14 | |
не выполняются команды в cmdlines.txt при использовании RIS | koyra | Автоматическая установка Windows 2000/XP/2003 | 3 | 21-06-2006 15:06 |
|