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

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

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

Аватара для dorosa

Старожил


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

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


Поиском не нашел ни чего похожего, а у самого познаний не хватает.

Задача из одной папки "%~dp0SP1rc2" в другую папку "%~dp0LANG"
нужно скопировать все файлы и папки с имеющимся в них файлами
Маски по которым нужно скопировать *ru-ru* и *en-us*

Отправлено: 20:00, 18-01-2011

 

Googler


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

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


Код: Выделить весь код
xcopy /q/s/y/r/h "%~dp0SP1rc2\*ru-ru*" "%~dp0LANG\"
xcopy /q/s/y/r/h "%~dp0SP1rc2\*en-us*" "%~dp0LANG\"

Отправлено: 05:14, 19-01-2011 | #2



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

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


Аватара для dorosa

Старожил


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

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


amel27,
Такую команду побывал, файлы копируются, а папки только те, где есть файлы соответствующие маскам *ru-ru* и *en-us*.
А нужно, чтобы копировались и папки *ru-ru* и *en-us*.

Отправлено: 12:23, 19-01-2011 | #3


Googler


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

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


Цитата dorosa:
нужно, чтобы копировались и папки *ru-ru* и *en-us*»
добавить обработку папок:
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion

for /f "delims=" %%a in ('dir /b/s/ad "%~dp0SP1rc2\*ru-ru*" "%~dp0SP1rc2\*en-us*"') do (set "$a=%%a"
md "!$a:%~dp0SP1rc2\=%~dp0LANG\!")2>nul

xcopy /q/s/y/r/h "%~dp0SP1rc2\*ru-ru*" "%~dp0LANG\"
xcopy /q/s/y/r/h "%~dp0SP1rc2\*en-us*" "%~dp0LANG\"

Последний раз редактировалось amel27, 19-01-2011 в 16:22. Причина: очепятка


Отправлено: 12:53, 19-01-2011 | #4


Аватара для dorosa

Старожил


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

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


Цитата amel27:
добавить обработку папок: »
Получается тоже самое. Папки с *ru-ru* и *en-us* не копируются.

Отправлено: 13:37, 19-01-2011 | #5


Старожил


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

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


А так?
Код: Выделить весь код
SETLOCAL EnableDelayedExpansion
for /f %%i in ('dir /b/s/ad "%~dp0SP1rc2\" ^| findstr /i ".*ru-ru.* .*en-us.*"') do (
   set "d=%%i"
   xcopy /q/s/y/r/h "!d!" "!d:%~dp0SP1rc2\=%~dp0LANG\!\"
   )
xcopy /q/s/y/r/h "%~dp0SP1rc2\*ru-ru*" "%~dp0LANG\"
xcopy /q/s/y/r/h "%~dp0SP1rc2\*en-us*" "%~dp0LANG\"

Последний раз редактировалось SendMessage, 19-01-2011 в 15:51.

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

Отправлено: 15:44, 19-01-2011 | #6


Аватара для dorosa

Старожил


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

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


Цитата SendMessage:
А так? »
Все отлично!
Спасибо!!!

Отправлено: 18:02, 19-01-2011 | #7


Пользователь


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

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


У меня похожая ситуация, но немножко с другим условием - может кому-то, тоже пригодится...
Есть, к примеру, папка D:\my_base в которой находятся файлы вида AB_XXX.reg - ZW_XXX.reg - они всегда одного формата, но первые два символа постоянно меняются. Мне необходимо, в папке C:\ создать папку с именем каждого файла и соответственно, каждый файл копировать в папку с его(!) именем. Есть батник, вида:
Цитата:
@echo off
setlocal enableextensions enabledelayedexpansion
set MYPATH=d:\my_base\
set SOURSE=??_ХХХ.reg
for /r %MYPATH% %%i in (%SOURSE%) do md %%~Ni && echo %%~Ni >> log.log
for /r %MYPATH% %%i in (%SOURSE%) do copy %MYPATH%\??_ХХХ.reg %%~Ni
Папки создает красиво, но при этом, в каждую папку копируются ВСЕ файлы из D:\my_base, и потом приходится удалять ненужные! Как выполнять сравнение имени файла с именем папки, в которую он копируется? Чувствую, что есть хитрый способ....

Отправлено: 17:16, 21-01-2011 | #8


Старожил


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

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


Цитата Smith_Wesson:
Папки создает красиво, но при этом, в каждую папку копируются ВСЕ файлы из D:\my_base, и потом приходится удалять ненужные! Как выполнять сравнение имени файла с именем папки, в которую он копируется? Чувствую, что есть хитрый способ.... »
Код: Выделить весь код
@echo off

set "MYPATH=z:\my_base\"
set "SOURSE=*.reg"
for /f "tokens=*" %%i in ('dir /b/s/a-d "%MYPATH%%SOURSE%" ^| findstr /e/i "\\.._XXX\.reg"') do xcopy /r/q/i/y "%%i" "z:\%%~ni\"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:25, 21-01-2011 | #9


Пользователь


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

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


SendMessage, - спасибо тебе, Добрый человек! Очень выручил!
...я правда, забыл добавить, что после этой операции, в конечных папках, и нужно паковать в архивчики, с текущей датой.
Вышел из положения такой строчкой:
Цитата:
FORFILES /P %MYPATH% /S /M *.reg /C "cmd /c icomp @file %date:~6,4%_%date:~3,2%_%date:~0,2%.z -h"
Всё работает!
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 24-01-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установщик обновлений, поиск файлов по двум маскам Lubitel Softa AutoIt 6 03-10-2010 03:35
CMD/BAT - [решено] как осуществить копирование по маске с сохранением структуры папок seriych Скриптовые языки администрирования Windows 3 29-05-2010 17:10
Разное - копирование папок gipper2006 Microsoft Windows 2000/XP 6 04-05-2008 12:28
Копирование папок Vasosel Microsoft Windows NT/2000/2003 9 23-08-2006 10:30




 
Переход