|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скопировать файлы из папок по определенному названию |
|
CMD/BAT - Скопировать файлы из папок по определенному названию
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Здравствуйте!
Можете подсказать, как реализовать следующее: Есть папка С:\Nodes, в ней одна или несколько папок такого формата - RU.*.* Нужно пройтись по каждой такой папке и внутри из папки Config скопировать файлы config.xml. И разложить эти файлы так: на С:\backup, здесь для каждого файла создавать папку с тем же названием RU.*.* (то есть название папки такое же, как то откуда мы его взяли). Надеюсь, всё понятно написано) Заранее благодарю за помощь. |
|
Отправлено: 14:48, 14-10-2016 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать megaloman, да, то что нужно, спасибо! А над скриптом для восстановления сижу целый день.
Хотелось, чтобы при запуске скрипта пользователю вывелся список всех папок с бэкапами, типа: 1. 19.10.2016 2. 20.10.2016 и т.д. Это сделала. Только с кодировкой проблемы - вместо русских букв символы, на этом пока не зацикливалась, пытаюсь сделать само восстановление. Пользователь должен ввести число, например, 2, после чего будут восстановлены файлы из папки 20.10.2016. Восстановлены туда же, откуда мы их брали, то есть на С:\Nodes по папкам Ru.*.* Вот как пытаюсь преобразовать код в обратную операцию, но пока безуспешно. Не пойму, как указать момент куда копировать - по папкам Ru.*.* (в коде поставила ??????????????????????) @Echo Off SETLOCAL EnableDelayedExpansion Set "Log=%~dpnx0.log" set num=1 echo доступные бекапы for /f delims^=^"^ tokens^=1 %%i in ('forfiles /p "c:\backup" /c "cmd /c if @isdir==TRUE echo @file"') do ( echo !num!. %%i set /a num+=1 ) set /P var=Введите номер бекапа: set num1=1 for /f delims^=^"^ tokens^=1 %%i in ('forfiles /p "c:\backup" /c "cmd /c if @isdir==TRUE echo @file"') do ( if !num1! equ %var% ( set backupfolder=%%i goto rec ) set /a num1+=1 ) echo Резервная копия не найдена. Работа скрипта прекращена. >>"%Log%" goto end :rec echo Будет использована резервная копия %backupfolder% >>"%Log%" Set "InMask=C:\backup\%backupfolder%\" Set "InFile=Ru.*.*\Config.xml" Set "OutDir=C:\Nodes" FOR /F "usebackq delims=" %%d IN (`Dir "%InMask%" /A:D /B /S 2^>nul`) DO ( If Exist "%%d\%InFile%" ( Copy "%%d\%InFile%" "%OutDir%\????????????????????????\Config\" >nul && Echo "%%d\%InFile%" ---^> "%OutDir%\????????????????????????\Config\" >>"%Log%" ) ) :end |
Отправлено: 17:42, 20-10-2016 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Я не читатель, я писатель , поэтому в Вашем коде не сильно копался. Как я понял, Вы выбираете бэкап за определённую дату-время и восстанавливаете все конфиги, которые там есть.
Попробуйте
@Echo Off cls Set "InMask=C:\Nodes\Ru.*.*" Set "InFile=Config" Set "OutDir=C:\Backup" SetLocal EnableExtensions EnableDelayedExpansion Set "DirFrom=" FOR /F "usebackq delims=" %%d IN (`Dir "%OutDir%" /A:D /B /O:-D /T:C 2^>nul`) DO ( Set "Sele=" Set /P "Sele=Доступна копия %%d. Восстанавливаем (Y), Далее (?), Закончить (Enter) " If /I "!Sele!"=="Y" Set "DirFrom=%%d" &GoTo :Continue If /I Not "!Sele!"=="?" GoTo :Eof ) :Continue If "%DirFrom%"=="" ( Echo Папка с восстанавливаемыми копиями не выбрана Pause GoTo :Eof ) Set "Log=%~dpnx0.log" Set "OutDir=%OutDir%\%DirFrom%" FOR /F "usebackq delims=" %%d IN (`Dir "%InMask%" /A:D /B /S 2^>nul`) DO ( If Exist "%%d\%InFile%" If Exist "%OutDir%\%%~nxd\" ( Echo "%OutDir%\%%~nxd\*.*" ---^> "%%d\%InFile%\" Copy "%OutDir%\%%~nxd\*.*" "%%d\%InFile%\" >nul && Echo "%OutDir%\%%~nxd\*.*" ---^> "%%d\%InFile%\" >>"%Log%" ) ) Чтобы не было зюкочек в диалогах и сообщениях - сохраните батник в 866 кодировке. Повторюсь, мне всё это не нравится, при нескольких пользователях такие неконтролируемые возможности приведут к конфликтам. |
------- Последний раз редактировалось megaloman, 21-10-2016 в 19:04. Отправлено: 17:32, 21-10-2016 | #12 |
Ветеран Сообщения: 1811
|
Профиль | Отправить PM | Цитировать megaloman,
Не могли бы и мне помочь создать батник для запуска копирования(когда нужно-дамы запустят). Нужно копировать измененные файлы из папки C:\Dvo\Bu в домашней сети на \\USB\Dvo\Bu (написал USB так как не помню название съемного носителя)это для одного компьютера и для другого из C:\Dvo\St в \\USB\Dvo\St |
Отправлено: 22:48, 21-10-2016 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата название съемного носителя:
Если это и в самом деле сетевые пути, то батник из одной строки: Аналогично и для St А еще лучше без батника: создать значок на xcopy и добавить туда параметры. |
|
------- Последний раз редактировалось megaloman, 21-10-2016 в 23:47. Отправлено: 23:25, 21-10-2016 | #14 |
Ветеран Сообщения: 1811
|
Профиль | Отправить PM | Цитировать megaloman,
Это я со своего взял-у меня в сети есть ресивер \\VUDUO2\Harddisk А у них к одному подключен жесткий диск через USB и второй компьютер его видит через сеть. Я в понедельник посмотрю точный путь |
Отправлено: 23:48, 21-10-2016 | #15 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, всё работает)
Тоже взялась за копирование файлов на другой сервер в домене. Делаю по вашему примеру: Цитата megaloman:
Но папка с файлами не копируется, "Неправильно указан диск". Что может быть не так? Папка Test в общем доступе. |
|
Отправлено: 18:08, 25-10-2016 | #16 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать JKop, У меня подобная конструкция прекрасно работает. ИМХО, папки по указанному пути нет. Я получил такое сообщение, когда сослался на несуществующую папку. Сделайте
Dir "\\10.52.10.175\Test\" - скорее всего получите "Неправильное сетевое имя" Пытаюсь телепатировать: Ваша папка Test - не имя сетевого ресурса, а папка внутри сетевого ресурса, например: "\\10.52.10.175\Share\Test\" Проверьте доступность сервера ping 10.52.10.175 Если есть файл-менеджер типа Far или Total Commander, посмотрите, видна ли папка Test при просмотре сети. Попробуйте выполнить локально на компе 10.52.10.175 команду net share Будет ли там помянута папка Test ? Возможно, файервол сервера блокирует доступ на папку. В общем, больше идей нет. |
------- Последний раз редактировалось megaloman, 25-10-2016 в 20:17. Отправлено: 20:08, 25-10-2016 | #17 |
Ветеран Сообщения: 1811
|
Профиль | Отправить PM | Цитировать megaloman,
Затянулось у меня аж до пятницы. Вот исходные данные На первом компьютере нужно копировать все измененные и новые файлы и папки с C:\dvo32 в E:\Lohnverrechnungs PC\Dvo32 и с C:\EURONORM в E:\Lohnverrechnungs PC\EURONORM На втором компьютере с C:\dvo32 в \\LOHN\Sicherung\Buchhaltung PC\Dvo32 и с C:\EURONORM в \\LOHN\Sicherung\Buchhaltung PC\EURONORM |
Отправлено: 19:24, 28-10-2016 | #18 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата Фонвизин:
На первом компьютере нужно копировать все измененные и новые файлы и папки
|
|
------- Отправлено: 20:54, 28-10-2016 | #19 |
Ветеран Сообщения: 1811
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 21:43, 28-10-2016 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - как скопировать файлы из 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 |
|