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

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

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

Аватара для Sub-Zero

Старожил


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

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


Приветствую!
Помогите решить задачу. Есть заранее составленный список в текстовом файле вида:
file_1fskldv1.xls
file_vdkyt.doc
file_fsdf.com и так далее.
Нужно пройтись по этому списку и найти в текущей папке, откуда выполняется скрипт, и всех подпапках файлы из списка и переместить их в заданную папку.
Те файлы которые в процессе работы не были найдены - занести в отдельный текстовый файл.
Спасибо!

Отправлено: 03:48, 10-08-2014

 

Ветеран


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

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


Цитата Sub-Zero:
в текущей папке, откуда выполняется скрипт »
В текущем каталоге или в каталоге, где расположен пакетный файл?

Цитата Sub-Zero:
и переместить их в заданную папку. »
Если будет найдено несколько файлов с одним и тем же именем — что делать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:18, 10-08-2014 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
@echo off
chcp 1251>nul

set "list=list.txt"
set "folder=D:\Заданная папка"
set "not_found=not_found.txt"

2>nul md "%folder%"
>"%not_found%" (
for /f "usebackq delims=" %%i in ("%list%") do (
 for /f "delims=" %%j in ('
 "2>nul dir /a-d/b/s "%%i""
 ') do (
  >nul move "%%j" "%folder%"
  )
 )|| (
 echo %%i
 )
)

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

Отправлено: 05:37, 10-08-2014 | #3


Аватара для Sub-Zero

Старожил


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

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


Цитата Iska:
В текущем каталоге или в каталоге, где расположен пакетный файл? »
В каталоге где находится сам пакетник.
Цитата Iska:
Если будет найдено несколько файлов с одним и тем же именем — что делать? »
Просто перезаписывать... если переименовывать это усложнит задачу.
Цитата Georgio:
Код: »
Супер!!! Спасибо огромное! Я в принципе понял что нужно использовать 2 цикла - одни для разбора подпапок и второй для разбора файла с именами фалов, но вот реализовать не удалось...

Отправлено: 11:15, 10-08-2014 | #4


Пользователь


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

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


Ради теста, я вписал скрипт в текстовый файл, дав ему расширение bat (operator.bat).
То есть, поиск должeн вестись в С:\ а результаты складываться в папку Заданная папка.
К сожалению, файлы не были найдены. Почему так?

Скрытый текст
@echo off
chcp 1251>nul

set "list=list.txt"
set "folder=С:\Заданная папка"
set "not_found=not_found.txt"

2>nul md "%folder%"
>"%not_found%" (
for /f "usebackq delims=" %%i in ("%list%") do (
for /f "delims=" %%j in ('
"2>nul dir /a-d/b/s "%%i""
') do (
>nul move "%%j" "%folder%"
)
)|| (
echo %%i
)
)

exit /b

Отправлено: 17:13, 09-03-2017 | #5


Ветеран


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

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


Цитата a_Wizard:
Ради теста, я вписал скрипт в текстовый файл, дав ему расширение bat (operator.bat).
То есть, поиск должeн вестись в С:\ »
С чего бы это в С:\?! Прочтите выше, где задавались вопросы и давались ответы на предмет того, где должен осуществляться поиск.

Отправлено: 17:23, 09-03-2017 | #6


Пользователь


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

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


Цитата Iska:
С чего бы это в С:\?! Прочтите выше, где задавались вопросы и давались ответы на предмет того, где должен осуществляться поиск. »
Ну вообщем, у меня получилось, когда я расположил батник (operator.bat) и текстовый файл (list.txt) в одну папку, а результаты поиска были перемещены в D:\Заданная папка. Пока возникают только 2 вопроса. Поиск ведется только в папке, где находятся 2 ключевых файла или в ее подпапках (на 1-2 уровня глубже) тоже? И потом, хотелось бы не перемещать, а копировать. А почему так медленно выполняется операция? Вроде я для проверки положил 5 крошечных по размеру файла, но они переместились в D лишь через полминуты.

Отправлено: 10:35, 11-03-2017 | #7


Ветеран


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

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


Цитата a_Wizard:
Поиск ведется только в папке, где находятся 2 ключевых файла или в ее подпапках (на 1-2 уровня глубже) тоже? »
Почитайте, за что отвечает параметр /s команды dir:
Код: Выделить весь код
dir /?
Цитата a_Wizard:
И потом, хотелось бы не перемещать, а копировать. »
Код: Выделить весь код
copy /?
Цитата a_Wizard:
А почему так медленно выполняется операция? Вроде я для проверки положил 5 крошечных по размеру файла, но они переместились в D лишь через полминуты. »
Большое и разветвлённое дерево каталогов для поиска, размер которого тупо не умещается в кэш?

Отправлено: 11:43, 11-03-2017 | #8


Пользователь


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

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


Iska, благодарю. Только хотел спросить. Если я хочу вести поиск на съемном диске E:\, какое значение в батнике надо поменять?

Отправлено: 10:52, 18-03-2017 | #9


Ветеран


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

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


Цитата a_Wizard:
Только хотел спросить. Если я хочу вести поиск на съемном диске E:\, какое значение в батнике надо поменять? »
Никакое. Откройте командную строку, сделайте текущим корневой каталог диска «e:»:
Код: Выделить весь код
cd /d e:\
затем оттуда запускайте пакетный файл, указав полный путь к нему (чтобы не набирать вручную полный путь — можно тупо перетянуть его в окно командной строки из Проводника).

Отправлено: 05:39, 19-03-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов по списку из файла foma24 Скриптовые языки администрирования Windows 2 30-12-2022 15:35
CMD/BAT - [решено] Перемещение файлов по списку neprotiv Скриптовые языки администрирования Windows 4 24-01-2013 03:06
CMD/BAT - поиск и копирование файлов по списку-маске martyn_80 Скриптовые языки администрирования Windows 1 24-11-2012 14:47
CMD/BAT - [решено] Перемещение файлов по списку в заданные директории 929151 Скриптовые языки администрирования Windows 4 16-11-2012 01:56
CMD/BAT - Перемещение файлов по списку Arsenik77 Скриптовые языки администрирования Windows 4 04-12-2011 20:43




 
Переход