Войти

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


bellagio
10-05-2014, 18:22
Здравствуйте.

Собственно со следующей задачкой. Нужно распределить файлы по папкам, в зависимости от данных указанных в логе. В логе присутствует - полный путь до файла, и классификатор куда, какой файл нужно положить. Пример лога:


C:\Use\1\mlog\file.zip - archive
*C:\Use\1\mlog\file.zip\1.txt - text
**C:\Use\1\mlog\file.zip\i.exe - po
***C:\Use\1\file.zip\F.dll - dll


Но есть одно условие. В логе начальный файл, начинается с пути, а если он в архиве, в логе пишется, какие файлы в архиве. И если файл архивный, то лог начинается, с символов *, **, **, ****, *****. Так вот получается мы берем только первый файл, а все строки с указанными в начале символами игнорируем.

получается в папку Archive мы переносим только file.zip остальные не трогаем.

Но нужен лог, если файл не существует по указанному пути, или же недоступен, то выносить его (файла) полную строку из начального лога, в лог ошибок.

Georgio
11-05-2014, 13:14
Как-то так:

@echo off
setlocal enabledelayedexpansion
(
date /t
time /t
for /f "usebackq eol=* delims=" %%i in ("somelog.log") do (
set string=%%i
for /f "tokens=1,2 delims=#" %%j in ("!string: - =#!") do (
if exist "%%j" (
md "%%k" 2>nul
move "%%j" "%%k">nul|| (
echo %%j
)
) else (
echo %%j
)
)
)
echo.
)>>"errors.log"
endlocal
exit /b

.




© OSzone.net 2001-2012