Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


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

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


Вот далеко не блестящее решение
Код: Выделить весь код
@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 следует понимать не как фильтр, а как разрешение при копировании файлов копировать скрытые/системные файлы тоже.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 19:38, 29-11-2017 | #2