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

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

Ответить
Настройки темы
CMD/BAT - Скопировать файлы из папок по определенному названию

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


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

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


Здравствуйте!
Можете подсказать, как реализовать следующее:
Есть папка С:\Nodes, в ней одна или несколько папок такого формата - RU.*.*
Нужно пройтись по каждой такой папке и внутри из папки Config скопировать файлы config.xml.
И разложить эти файлы так: на С:\backup, здесь для каждого файла создавать папку с тем же названием RU.*.* (то есть название папки такое же, как то откуда мы его взяли).
Надеюсь, всё понятно написано)
Заранее благодарю за помощь.

Отправлено: 14:48, 14-10-2016

 

Ветеран


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

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


Код: Выделить весь код
xcopy /yes "С:\Nodes" "С:\backup"
Если именно...
Код: Выделить весь код
@echo off
for /f "delims=" %%a in ('dir /ad/b/s "С:\Nodes\RU.*.*"') do xcopy /yes "%%a" "С:\backup\%%~nxa\"
exit

Последний раз редактировалось alpap, 15-10-2016 в 00:08.


Отправлено: 23:50, 14-10-2016 | #2



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set "InMask=C:\Nodes\Ru.*.*"
Set "InFile=Config\Config.xml"
Set "OutDir=C:\Backup"

FOR /F "usebackq delims=" %%d IN (`Dir "%InMask%" /A:D /B /S 2^>nul`) DO (
	If Exist "%%d\%InFile%" (
		Md "%OutDir%\%%~nxd" 2>nul
	 	Copy "%%d\%InFile%" "%OutDir%\%%~nxd\" >nul
	)  
)

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


Последний раз редактировалось megaloman, 15-10-2016 в 18:38.

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

Отправлено: 08:53, 15-10-2016 | #3


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


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

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


alpap, ошибка: Синтаксическая ошибка в имени файла, имени папки или метке тома.

Отправлено: 12:49, 18-10-2016 | #4


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


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

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


megaloman, спасибо, всё работает. А не могли бы Вы пояснить, какой параметр за что отвечает, я новичок в этом деле.
Просто мне еще нужно по аналогии запрограммировать обратную операцию - восстановление. Хотелось бы разобраться.

Кроме этого нарисовались еще условия: для каждого запуска скрипта записывать всё в отдельный лог-файл.
И еще: при каждом запуске скрипта на С:\backup будет создаваться папка с названием - текущая дата и время, а в нее уже будут писаться папки Ru.*.* . С этим разобралась.
Соответственно при восстановлении (другой скрипт) пользователю должен вывестись список всех таких папок, пользователь должен выбрать ту, которая ему нужна, и далее уже восстановление файлов Config.xml

Жду посильной помощи)
Спасибо!

Отправлено: 13:05, 18-10-2016 | #5


Ветеран


Contributor


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

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


JKop, Пользователь входит в систему под своим уникальным именем? Мне не нравится идея выбора пользователем имени папки при восстановлении.

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


Отправлено: 13:36, 18-10-2016 | #6


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


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

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


megaloman, нет, не под уникальным. А чем не нравится?

Отправлено: 13:59, 18-10-2016 | #7


Ветеран


Contributor


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

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


JKop, Я не очень представляю как сделать красиво и надёжно выбор. И выбор пользователем - это всегда путь к конфликту из-за возможного неверного выбора. Да еще Вы хотите иметь файлы за разные даты и время. Вот решение с организацией папок по дате-времени и ведением лог-файла.
Код: Выделить весь код
@Echo Off

Set "InMask=C:\Nodes\Ru.*.*"
Set "InFile=Config\Config.xml"
Set "OutDir=C:\Backup"

Set "Log=%~dpnx0.log"

Set "OutDir=%OutDir%\%Date%_%Time::=-%"

FOR /F "usebackq delims=" %%d IN (`Dir "%InMask%" /A:D /B /S 2^>nul`) DO (
	If Exist "%%d\%InFile%" (
		Md "%OutDir%\%%~nxd" 2>nul
	 	Copy "%%d\%InFile%" "%OutDir%\%%~nxd\" >nul && Echo "%%d\%InFile%"  ---^> "%OutDir%\%%~nxd\" >>"%Log%" 
	)  
)
Что конкретно не понятно?

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


Последний раз редактировалось megaloman, 18-10-2016 в 18:41.

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

Отправлено: 15:43, 18-10-2016 | #8


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


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

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


megaloman, не пойму, запускаю скрипт, ничего не происходит. Почему в коде появился диск Z: - поменяла на С:

Отправлено: 15:59, 18-10-2016 | #9


Ветеран


Contributor


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

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


JKop, Виноват! У меня для отладки существует диск Z: , а Вам надо C:. Я в спешке выпустил это из виду. Плюс еще допустил погрешности. Я исправил скрипт, возьмите именно его, испытайте.

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


Отправлено: 18:38, 18-10-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - как скопировать файлы из EXT2 в NTFS? Victor75 Общий по Linux 10 28-03-2014 01:11
CMD/BAT - скопировать из удаленнего компьютера состоящией в рабочей группе файлы j-kidd999 Скриптовые языки администрирования Windows 0 19-08-2013 13:54
CMD/BAT - Скопировать все файлы из одного каталога в другой Pavelnt Скриптовые языки администрирования Windows 5 10-03-2013 07:08
CMD/BAT - [решено] Создать подкаталоги, и скопировать файлы из корневого каталога по подкаталогам. grinsen Скриптовые языки администрирования Windows 2 18-11-2010 13:48
Разное - [решено] Windows зависает при попытке скопировать файлы по сети 7human7 Microsoft Windows 7 0 05-10-2010 21:10




 
Переход