1 (изменено: ypppu, 2016-04-17 14:52:17)

Тема: CMD/BAT: Поиск и копирование папок по списку из txt файла

На жестком хранятся порядка 10000 папок из которых по списку (txt файл ) нужно найти и скопировать в другу папку, около 200 папок. В инете нашёл скрипт, но он ищет файлы а не папки...

@echo off
chcp 1251>nul

set "list=life.txt"   - файл в котором перечень папок
set "folder=C:\Users\Books\Desktop\OZHILI"  - папка в которую их нужно скопировать
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

Помогите пожалуйста решить задачу, а то мне каждый день приходится вручную всё это копировать.

2 (изменено: Ded.Shkarpet, 2016-04-19 11:55:36)

Re: CMD/BAT: Поиск и копирование папок по списку из txt файла

Всё дело в строчке

int-el пишет:

dir /a-d/b/s "%%i""

У команды dir ключ /a-d означает "всё, кроме директорий". Если в файле-списке только директории, следует заменить его на /AD. А лучше убрать бы всю эту строчку, поскольку команда move, применённая к директории переносит всю директорию с поддиректориями и вложенными файлами. Оставить

for /f "usebackq delims=" %%i in ("%list%") do (
 if not exist %%i (
   @echo %%i >>%not_found%
 ) else (
  move "%%i" "%folder%"
 )
)

А на будущее рекомендовал бы посмотреть для бОльшей автоматизации процесса в сторону команды robocopy /?. В неё уже заложена возможность запуска копирования в определённое время, повторных попыток копирования через определённый таймаут в случае неудач, и ведение лога.