Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Код:
 
@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
 


Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 03:48 02-10-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru