Вот батник (то есть скрипт надо сохранить в файл с расширением .bat в 866 кодировке при наличии в тексте путей к файлам и папкам на русском языке). Из-за исключений получилось громоздко. Исключениями могут быть как файлы, так и папки целиком. Перед обработкой заданной папки исключения переносятся во временную папку, заданная папка обрабатывается, затем в ней восстанавливаются исключения, временная папка удаляется.
Код:

@Echo Off
Set "InDir=Z:\Temp"
Set "Exc="_xcopy.txt" "JS_Host\Дискета от книги" "JS_Host\Из интернета\Листинг 1.htm""
Set "DSave=!%~nx0.tmp"
pushd "%InDir%"
attrib -r -s -h /S /D
Call :TmpRD "%InDir%" "%DSave%" 1
FOR %%E IN (%Exc%) DO Call :Save "%InDir%\%%~E" "%DSave%"
For /F "usebackq delims=" %%D In (`Dir "%InDir%\" /B /S /A:D 2^>nul^|Sort /R`) Do Call :DelDir "%%D"
For /F "usebackq delims=" %%F In (`Dir "%InDir%\" /B /S /A:-D 2^>nul`) Do Call :DelFile "%%F"
Call :Restore "%InDir%" "%DSave%"
Call :TmpRD "%InDir%" "%DSave%"
GoTo :Eof
:TmpRD
RD "%~d1\%~2" /S /Q 2>nul
If "%3"=="1" MD "%~d1\%~2%~pnx1"
GoTo :Eof
:DelDir
Set "DName=%~nx1"
If Not "%DName:~0,1%"=="!" Rd %1 /S /Q
GoTo :Eof
:DelFile
Set "FName=%~nx1"
If Not "%FName:~0,1%"=="!" Del %1
GoTo :Eof
:Save
For /F "usebackq delims=" %%f In (`Dir %1 /B /A:-D 2^>nul`) Do (
If /I %1=="%~dp1%%f" (
Md "%~d1\%~2%~p1" 2>nul
Move /Y %1 "%~d1\%~2%~p1" >nul
GoTo :Eof
)
)
Md "%~d1\%~2%~pnx1" 2>nul
Move /Y "%~1\*.*" "%~d1\%~2%~pnx1\" >nul
For /F "usebackq delims=" %%f In (`Dir %1 /B /S /A:D 2^>nul`) Do (
Md "%%~df\%~2%%~pnxf" 2>nul
Move /Y "%%f\*.*" "%%~df\%~2%%~pnxf\" >nul
)
GoTo :Eof
:Restore
xcopy "%~d1\%~2%~pnx1\*.*" "%~1\" /E /Y >nul
GoTo :Eof
Здесь для примера:
Z:\Temp - обрабатываемая папка
Исключения:
_xcopy.txt - файл в обрабатываемой папке, то есть Z:\Temp\_xcopy.txt
JS_Host\Дискета от книги - папка, то есть Z:\Temp\JS_Host\Дискета от книги
и т д, уровень вложенности папок и файлов исключений любая
Не исключаю, что после обработки некоторые папки будут пустыми, я их не удалял, если они соответствуют условию поставленной задачи