Den_Klimov Ну, вторая задача - в общем решена...
[more=Смотрим здесь...]
Код: @echo off
rem Обозначаем используемые каталоги...
rem В принципе, им можно присвоить значения переменных
rem Но тогда еще нужно будет делать проверки:
rem 1) На то, что переменные переданы
rem 2) На то, что такие папки - существуют
rem 3) На завершающий слэш (!!!)
Set Cat_1=E:\FOR_FTP\Flash\
Set Cat_2=D:\Temp\Den.1\
Set Cat_3=D:\Temp\Den.2\
rem Описали временные файлы, которые нам понадобятся
Set File1=%TEMP%\Temtora1.txt1
Set File2=%TEMP%\Temtora2.txt2
rem И, если они существуют - удалили их
rem По хорошему - нужно поставить проверку на фактическое удаление....
if exist %File1% del %File1%
if exist %File2% del %File2%
rem перешли в первый каталог....
PUSHD %Cat_1%
rem Посчитали его "глубину"...
set ind=0
:next
set /a ind+=1
set tmp=
for /f "delims=\ tokens=%ind%" %%a in ("%Cat_1%") do set tmp=%%a
if not "%tmp%"=="" goto next
set /a ind-=1
rem Записали список файлов 1-го каталога в 1-й промежуточный файл...
for /r %%d in (.) do (
cd %%d
for %%I in (*) do (
echo %%~fI>> %File1%
)
)
rem Вернулись из первого каталога
POPD
rem Обрабатываем 1-й промежуточный файл ("отбросили" имя 1-го каталога)
rem и записали результат во 2-й промежуточный файл
rem Возможно, это можно было бы сделать "покрасивее", но у меня
rem пока (???) не получается
FOR /F "delims=\ tokens=%ind%*" %%b in (%File1%) do ( echo %%c>> %File2%)
rem Обрабатываем 2-й промежуточный файл (т.е. собственно список файлов)
rem Саму обработку - смотри в _read_str
FOR /F "delims=* tokens=*" %%b in (%File2%) do call :_read_str %%b
rem Копируем собержимое 1-го каталога во 2-й (последний шаг)
ECHO F| XCOPY "%Cat_1%*.*" "%Cat_2%" /E /H > nul
rem Всё, закончили...
rem Ещё замечание - обработки "коллизий" - не предусмотрено
rem (Ну, предположим - при невозможности удалить - повторить эту
rem процедуру ещё 10 раз и, если опять недуачно - что-то (что???)
rem сделать / сообщить)
goto :EOF
:_read_str
rem Ну а здесь - сначала проверка, существует ли во 2-м каталоге
rem нужный файл...
IF NOT EXIST "%Cat_2%%*\" (IF EXIST "%Cat_2%%*" (
rem И если он всё-же существует - выполняем условия задачи
rem т.е. копируем из 2-го каталога в 3-й
ECHO F| XCOPY "%Cat_2%%*" "%Cat_3%%*"/H > nul
rem снимаем атрибуты
ATTRIB -R -A -S -H "%Cat_2%%*"
rem удаляем
DEL /Q "%Cat_2%%*"
))
goto :EOF