Показать полную графическую версию : [решено] Копирование папок и файлов по маскам
Поиском не нашел ни чего похожего, а у самого познаний не хватает.
Задача из одной папки "%~dp0SP1rc2" в другую папку "%~dp0LANG"
нужно скопировать все файлы и папки с имеющимся в них файлами
Маски по которым нужно скопировать *ru-ru* и *en-us*
xcopy /q/s/y/r/h "%~dp0SP1rc2\*ru-ru*" "%~dp0LANG\"
xcopy /q/s/y/r/h "%~dp0SP1rc2\*en-us*" "%~dp0LANG\"
amel27,
Такую команду побывал, файлы копируются, а папки только те, где есть файлы соответствующие маскам *ru-ru* и *en-us*.
А нужно, чтобы копировались и папки *ru-ru* и *en-us*.
нужно, чтобы копировались и папки *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\"
добавить обработку папок: »
Получается тоже самое. Папки с *ru-ru* и *en-us* не копируются.
SendMessage
19-01-2011, 15:44
А так?
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\"
А так? »
Все отлично!
Спасибо!!!
Smith_Wesson
21-01-2011, 17:16
У меня похожая ситуация, но немножко с другим условием - может кому-то, тоже пригодится...
Есть, к примеру, папка 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
Папки создает красиво, но при этом, в каждую папку копируются ВСЕ файлы из 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
SendMessage, - спасибо тебе, Добрый человек! Очень выручил!
...я правда, забыл добавить, что после этой операции, в конечных папках, и нужно паковать в архивчики, с текущей датой.
Вышел из положения такой строчкой:
FORFILES /P %MYPATH% /S /M *.reg /C "cmd /c icomp @file %date:~6,4%_%date:~3,2%_%date:~0,2%.z -h"
Всё работает!
Добрый день у меня тоже очень похожая проблема,у меня в каталоге создаються подкаталоги с именами текущей даты и времени такого типа 28-01-11 13,где 28-01-11 -это текущая дата,а 13 это время,тоесть почасово добавляеться к каждой папке.Вопрос как можно копировать все подкаталоги за сегодняшние сутки тоесть как указать скрипту делать выборку по сегодняшней дате и копировать в другую директорию ? Спасибо за ответ!!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.