Войти

Показать полную графическую версию : Как скопировать системные и скрытые файлы из каталога-источника в заданный путь?


ЦезарЪ
27-11-2017, 14:56
Для того чтобы копировать скрытые и системные файлы, использую xcopy /h "%path1%" "%path2%", при использовании команды xcpopy и атрибут /H, копируется все файлы.

Для проверки системных и скрытых файлов, использую команду dir /b /a:h "%path1%\*.* и dir /b /a:s "%path1%\*.*" - выводит файлы имеют такой тип, чтобы увидеть файлы, которые он скопирует из пути1.

Полное задание: Пакетный файл, предназначенный для копирования системных и скрытых файлов из каталога-источника в заданное место назначения. Каталог-источник и место назначения задаются в качестве пакетных параметров. После копирования отчет, содержащий список скопированных файлов с путем, в автоматическом режиме загружается в текстовый процессор "Блокнот".

megaloman
29-11-2017, 19:38
@Echo Off

Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_Out"
Set "LogFile=%~dpnx0.log"

>"%LogFile%" (FOR /F "usebackq tokens=1,2 delims=>" %%i IN (`"xcopy "%BoxIn%\*.*" "%BoxOut%\" /L /F /H /S /K /Y" 2^>nul`) DO If Not "%%j"=="" (Call :CopyAttrib "%%i" "%%j"))
Notepad "%LogFile%"
GoTo :Eof

:CopyAttrib
Set "InFile=%~1"
Set "InFile=%InFile:~0,-2%"
Set "OutDir=%~p2"
Set "OutDir="%OutDir:~2%""
Set /A Log=0
Dir "%InFile%" /b /A:S >nul 2>nul &&Set /A Log=1
Dir "%InFile%" /b /A:H >nul 2>nul &&Set /A Log=1
If %Log% EQU 1 (
Xcopy "%InFile%" %OutDir% /H /K /Y >nul 2>&1
Echo "%InFile%"
)
GoTo :Eof В чём неприятности:
1. Если в исходном пути попадаются папки с атрибутом скрытый/системный, то в копии атрибут скрытый/системный с папок убирается
2. Нормально скрипт работает в кодировке 866. Иначе файлы с русскими буквами в названии не обработаются.
3. Как следствие, в стандартном блокноте файлы с русскими буквами в названии отображаются в зюкочками.Для того чтобы копировать скрытые и системные файлы, использую xcopy /h »
/H в xcopy следует понимать не как фильтр, а как разрешение при копировании файлов копировать скрытые/системные файлы тоже.




© OSzone.net 2001-2012