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

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

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

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


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

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


Проблема следующая. Есть директория с n-ным количеством поддиректорий. Во всех этих поддиректориях нужно найти некоторые файлы и скопировать в единую дирректорию. Имена файлов задаются списком baselist.
Хотелось бы с применением нижеописанной конструкции
Код: Выделить весь код
for %%a in (%Baselist%) do copy /b "%dir1%%%a*.ans" "%dir2%"
Или проще будет задать список папок, из которых копировать все файлы? Но так не совсем удобно(((

Отправлено: 14:37, 27-04-2010

 

Старожил


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

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


Будет вот так (насколько я понял):
- в переменную List - имя файла (и путь к нему при необходимости) со списком копируемых файлов
- в переменную Dst - каталог, куда копировать файлы (на конце знак "\").
- копируется из текущего каталога (откуда произведен запуск) с подкаталогами.

Код: Выделить весь код
@echo off
SetLocal EnableExtensions

Set List=baselist.txt
Set Dst=C:\TEMP\

if not exist %List% (
echo List-file not found!
exit 1
)
Set log="%~dpn0.log"
Set tmp="%~dpn0.tmp"
Set wrk="%~dpn0.lst"

echo ======= %date% %time:~0,8% =======>>%log%
del /f %wrk% 2>nul
dir /a /b /on /s>%tmp%
for /f "usebackq tokens=* delims=" %%F in ("%List%") do findstr /c:"%%F" %tmp%>>%wrk%
for /f "usebackq tokens=* delims=" %%F in (%wrk%) do (
copy /b /y "%%F" "%Dst%" >nul 2>nul
if errorlevel 1 (echo  Can`t copy %%F to "%Dst%">>%log%) else (echo  File %%F copied>>%log%)
)

del /f %tmp%
del /f %wrk%
ЗЫ: Одноименные файлы при копировании перезатираются новыми и в логе это не отражается (такая проверка потребует некоторого усложнения алгоритма).

Отправлено: 19:18, 27-04-2010 | #2



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

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


Ветеран


Contributor


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

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


А так вот нельзя?
Код: Выделить весь код
Set Baselist="kuku.txt","kuku1.txt"
Set Otkuda="H:\Delete"
Set Kuda="H:\Delete1\"

for /R %Otkuda% %%i in (%Baselist%) do copy "%%~fi" %Kuda%
Здесь переменной Otkuda присвоено имя директории в которой могут быть поддиректории разной вложенности, из которых берутся файлы, помянутые в списке. За просмотр поддиректорий отвечает ключ /R.
%%~fi расширяет имя файла в переменной %%i до полного имени (с путём).
Кавычки надо на случай того, что в имени файла или пути могут встретиться пробелы

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


Последний раз редактировалось megaloman, 27-04-2010 в 19:46. Причина: Пояснение

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

Отправлено: 19:37, 27-04-2010 | #3


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


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

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


Спасибо, megaloman, идею подхватил, под себя доработал. Вариант отличный!

Отправлено: 21:23, 27-04-2010 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] помагите написать батник для копирования папки robingut Скриптовые языки администрирования Windows 23 04-05-2016 11:22
CMD/BAT - [решено] Батник сбора файлов из поддиректорий в общую папку rBBWYwg Скриптовые языки администрирования Windows 17 05-02-2012 16:14
CMD/BAT - [Решено] Написать батник для копирования одного файла во многие папки рекурсивно. Iodine Скриптовые языки администрирования Windows 5 20-05-2010 22:31
Проблема на моменте копирования файлов для установки. oxotnik_max Автоматическая установка Windows 2000/XP/2003 8 18-04-2008 10:18
программа для блокирования создания - копирования - файлов oIo_DeN_oIo Microsoft Windows 2000/XP 9 27-02-2007 12:48




 
Переход