Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поочередное перемещение файлов по одному.

Ответить
Настройки темы
CMD/BAT - [решено] Поочередное перемещение файлов по одному.

Новый участник


Сообщения: 17
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день.
Необходимо написать скрипт который перемещает файлы из одной папки в другую по одному (например: 1.txt скопировал-удалил, 2.txt скопировал-удалил ), и оставляет пустую исходную папку.
У меня получился скрипт подобного вида:

Цитата:
XCOPY /S/Q/Y "D:\2\*.*" "D:\22\*.*"
CD /D "D:\" & RD /S/Q "D:\2\*.*"
pause
НО, он сначала копирует весь каталог, а после уже удаляет скопированную папку.
Заранее благодарен за помощь.

Отправлено: 08:37, 06-06-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


1. Так «скопировал-удалил» или «переместил»? Это принципиально разные вещи.
2. Почему не устраивает имеющийся вариант, который работает быстрее?

Отправлено: 09:45, 06-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Мне идеально подходит вариант с перемещением.

Файлов очень много, примерно полмиллиона. Мой вариант не позволяет перезагружать и выключать компьютер, т.к. при принудительном завершении работы батника, и последующем запуске он начинает весь процесс заново.

Отправлено: 09:57, 06-06-2012 | #3


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Цитата:
Так «скопировал-удалил» или «переместил»? Это принципиально разные вещи.
- совершенно справедливо. Если перемещение идёт в директориях одного диска, то это делается мигом. И перемещение гораздо безопаснее, сама команда Move отслеживает успешность перемещения. Если Каталог 2 не расшарен и не имеет особых прав доступа, то возможно
Код: Выделить весь код
move /Y d:\2 D:\22
md d:\2
Либо, без пересоздания папки 2
Код: Выделить весь код
@Echo off
Md D:\22
FOR /F "usebackq delims=" %%i IN (`dir D:\2\*.* /b`) DO Move /Y "D:\2\%%i" "D:\22\"
Либо совсем как хотелось, по одному файлу но с сохранением исходной структуры папок
Код: Выделить весь код
@Echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

Xcopy /T /Y "D:\2\*.*" "D:\22\"

FOR /F "usebackq delims=" %%i IN (`dir "D:\2\*.*" /b /S /A:-D`) DO (
  Set From="%%i"
  Move /Y !From! !From:D:\2\=D:\22\! 
)
В принципе, можно после завершения процесса убить и саму исходную папку, но гарантии, что где-то в папке не остались файлы, нет. При необходимости придётся дописать для этого кусок кода, например, вставив анализ на успешность завершения каждого из перемещений (ErrorLevel) (естественно, если папка 2 не пополняется содержимым в процессе обработки).

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-06-2012 в 11:52.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:05, 06-06-2012 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


megaloman, не только; в первую очередь — получающаяся разница в правах на файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:13, 06-06-2012 | #5


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, Спасибо, что откликнулись!

megaloman, Взял 1й, а потом и 2й вариант. Очень помогли мне, спасибо.


p.s. только во 2 и 3 решении синтаксис местами не ясен)

Отправлено: 11:34, 06-06-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поочередное перемещение файлов по одному.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Перемещение файлов по списку Arsenik77 Скриптовые языки администрирования Windows 4 04-12-2011 20:43
CMD/BAT - Перемещение файлов по маске SanyaJoker Скриптовые языки администрирования Windows 0 17-11-2011 12:54
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов KamikadZZe Скриптовые языки администрирования Windows 1 01-09-2011 14:15
CMD/BAT - Перемещение файлов (jpg) по их количеству dark-------13 Скриптовые языки администрирования Windows 3 27-04-2011 16:20
Разное - Перемещение файлов как вид дефрагментации sltt Microsoft Windows 2000/XP 12 01-03-2010 20:01




 
Переход