Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Копирование папок и файлов по маскам (http://forum.oszone.net/showthread.php?t=196980)

dorosa 18-01-2011 20:00 1591666

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

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

amel27 19-01-2011 05:14 1591990

Код:

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


dorosa 19-01-2011 12:23 1592203

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

amel27 19-01-2011 12:53 1592223

Цитата:

Цитата 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\"


dorosa 19-01-2011 13:37 1592254

Цитата:

Цитата amel27
добавить обработку папок: »

Получается тоже самое. Папки с *ru-ru* и *en-us* не копируются.

SendMessage 19-01-2011 15:44 1592365

А так?
Код:

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\"


dorosa 19-01-2011 18:02 1592477

Цитата:

Цитата SendMessage
А так? »

Все отлично!
Спасибо!!!

Smith_Wesson 21-01-2011 17:16 1594090

У меня похожая ситуация, но немножко с другим условием - может кому-то, тоже пригодится...
Есть, к примеру, папка 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, и потом приходится удалять ненужные! Как выполнять сравнение имени файла с именем папки, в которую он копируется? Чувствую, что есть хитрый способ....

SendMessage 21-01-2011 20:25 1594261

Цитата:

Цитата 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\"


Smith_Wesson 24-01-2011 14:30 1596136

SendMessage, - спасибо тебе, Добрый человек! Очень выручил!
...я правда, забыл добавить, что после этой операции, в конечных папках, и нужно паковать в архивчики, с текущей датой.
Вышел из положения такой строчкой:
Цитата:

FORFILES /P %MYPATH% /S /M *.reg /C "cmd /c icomp @file %date:~6,4%_%date:~3,2%_%date:~0,2%.z -h"
Всё работает!

daym0n 28-01-2011 14:18 1599171

Добрый день у меня тоже очень похожая проблема,у меня в каталоге создаються подкаталоги с именами текущей даты и времени такого типа 28-01-11 13,где 28-01-11 -это текущая дата,а 13 это время,тоесть почасово добавляеться к каждой папке.Вопрос как можно копировать все подкаталоги за сегодняшние сутки тоесть как указать скрипту делать выборку по сегодняшней дате и копировать в другую директорию ? Спасибо за ответ!!!


Время: 17:44.

Время: 17:44.
© OSzone.net 2001-