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

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

Ответить
Настройки темы
CMD/BAT - XCOPY выборочное копирование файлов.

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


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

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


Подскажите пожалуйста как с помощью батника и команды XCOPY скопировать все файлы из каталога за исключением файлов начинающихся с подчеркивания ( __111.txt ) в папку с текущей датой?

Отправлено: 21:19, 30-11-2015

 

Ветеран


Contributor


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

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


Если имена самой папки и её подпапок не начинаются с подчёркивания (кстати, у Вас в задании два подчеркивания - это часом не ошибка, файлы не должны начинаться с двух подчеркиваний?) то так:
Код: Выделить весь код
@Echo Off

Set "From=D:\Dir1"
Set "To=D:\Dir2"

Echo \_ >~tmp.tmp

Set "Dt=%Date:~6,4%%Date:~3,2%%Date:~0,2%"

Xcopy "%From%\*.*" "%To%\%Dt%\" /s /y /q /EXCLUDE:~tmp.tmp
Del ~tmp.tmp
Предполагал, что дата в системе отображается как дд.мм.гггг. Копируется в папку ггггммдд.
Комментарии
Содержимое папки Dir1 копируется в папку Dir2 вместе с подпапками командой xcopy. Смысл её ключей смотрите при запуске команды xcopy /? в командном окне. Чтобы исключить копирование файлов, начинающихся на _ , до копирования организуем командой echo текстовый файл ~tmp.tmp со строкой c частью полного имени исключаемых файлов \_ . Этот файл указываем в ключе exclude в xcopy и после копирования удаляем.

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


Последний раз редактировалось megaloman, 01-12-2015 в 02:32.

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

Отправлено: 22:58, 30-11-2015 | #2



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

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


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


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

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


Спасибо. Я завтра посмотрю точно но возможно файлы и с двумя подчеркиваниями. Если не трудно можете прокомментировать что есть что в этом файле?

Отправлено: 23:22, 30-11-2015 | #3


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


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

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


Спасибо Вам огромное за помощь! Если можно, последний вопрос, как исключить копирование каталогов находящихся в той же директории?
Пардон, с этим разобрался сам Вопрос встал, как архивировать файлы при копировании или копировать сразу в архив с текущей датой?

Последний раз редактировалось Fanbeer, 01-12-2015 в 10:49.


Отправлено: 08:12, 01-12-2015 | #4


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


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

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


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

Отправлено: 12:43, 01-12-2015 | #5


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


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

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


Цитата megaloman:
-там файлы только созданные в текущем дне или надо архивировать только файлы текущего дня, или всё что там есть (исключая _) в архив с именем текущей даты? »
Из корневого каталога архивировать все файлы исключая те которые начинаются с ( _ ) и исключая папки которые находятся в этом каталоге.

Из папок которые находятся в корневом каталоге, копировать в отдельную папку ( например "Журнал" ) файлы созданные предыдущем днем.

Файлы небольшого размера.

Отправлено: 16:13, 01-12-2015 | #6


Ветеран


Contributor


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

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


Из корневого каталога архивировать все файлы исключая те которые начинаются с ( _ ) и исключая папки которые находятся в этом каталоге.
Код: Выделить весь код
@Echo Off

Set "From=D:\Dir1"
Set "ToT=D:\Dir2\Today_"

Set "MaskOff=_*.*"

Set "Arc=%ProgramFiles%\winrar\winrar.exe"
rem Set "Arc=%ProgramFiles%\winrar\rar.exe"

md "%ToT%" 2>nul

"%Arc%" a -x%MaskOff% -agYYYYMMDD "%ToT%\.rar" "D:\Dir1\*.*"
Из папок которые находятся в корневом каталоге, копировать в отдельную папку ( например "Журнал" ) файлы созданные предыдущем днем.
Код: Выделить весь код
@Echo Off

Set "From=D:\Dir1"
Set "ToY=D:\Dir2\Yesterday_"

Set "MaskOff=_*.*"

Set "Arc=%ProgramFiles%\winrar\winrar.exe"
REM Set "Arc=%ProgramFiles%\winrar\rar.exe"

md "%ToY%" 2>nul

Set "Dt=%Date:~6,4%%Date:~3,2%%Date:~0,2%"
FOR /F "usebackq delims=" %%i IN (`Dir "%From%\*.*" /b /A:D 2^>nul`) Do (
	"%Arc%" a -tn2d -tb%Dt%0000 -x%MaskOff% -agYYYYMMDD "%ToY%\.rar" "D:\Dir1\%%i\*.*"
)
Обе задачи в одном флаконе.
Код: Выделить весь код
@Echo Off

Set "From=D:\Dir1"
Set "ToT=D:\Dir2\Today_"
Set "ToY=D:\Dir2\Yesterday_"

Set "MaskOff=_*.*"

Set "Arc=%ProgramFiles%\winrar\winrar.exe"
rem Set "Arc=%ProgramFiles%\winrar\rar.exe" >nul

md "%ToT%" 2>nul
md "%ToY%" 2>nul

"%Arc%" a -x%MaskOff% -agYYYYMMDD "%ToT%\.rar" "D:\Dir1\*.*"

Set "Dt=%Date:~6,4%%Date:~3,2%%Date:~0,2%"
FOR /F "usebackq delims=" %%i IN (`Dir "%From%\*.*" /b /A:D 2^>nul`) Do (
	"%Arc%" a -tn2d -tb%Dt%0000 -x%MaskOff% -agYYYYMMDD "%ToY%\.rar" "D:\Dir1\%%i\*.*"
)

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


Последний раз редактировалось megaloman, 01-12-2015 в 21:30.

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

Отправлено: 17:24, 01-12-2015 | #7


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


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

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


Архив получился но вот из подкаталога файл за вчерашний день не скопировался!

Отправлено: 19:30, 01-12-2015 | #8


Ветеран


Contributor


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

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


Fanbeer, Естественно, это вторая задача. Уже сделал.

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


Отправлено: 21:33, 01-12-2015 | #9


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


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

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


megaloman, Спасибо огромное, реально выручили, дома попробовал все отлично работает

Отправлено: 23:04, 01-12-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Выборочное сжатие системных файлов уменьшит занимаемое Windows 10 пространство OSZone News Новости и события Microsoft 0 17-03-2015 13:30
CMD/BAT - [решено] копирование файлов по сети через xcopy alww Скриптовые языки администрирования Windows 4 13-03-2012 09:47
CMD/BAT - [решено] Выборочное копирование из текстового файла. odin1 Скриптовые языки администрирования Windows 5 09-03-2012 22:00
CMD/BAT - Ошибка при использовании xcopy для копирования файлов с расширением более 3 символов megaloman Скриптовые языки администрирования Windows 2 20-01-2011 09:36
CMD/BAT - [решено] нельзя назвать батник делающий xcopy, xcopy.bat почему ? foxbat Скриптовые языки администрирования Windows 3 17-09-2009 05:33




 
Переход