Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем

Ответить
Настройки темы
CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем

Новый участник


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

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


Привет! Помогите доточить скрипт.
Задача - есть в папочке RAW файлы с именами:

20120209_Operator12_192.168.1.1_163404.log
20120209_User2_192.168.100.25_160823.log

Где первое число - это дата,
после подчеркивания - имя пользователя.
потом после подчеркивания - IP-шник
потом после подчеркивания - время в слитном виде, т.е. 163404 соотвествует 16:34:04

Надо эти файлы разобрать по каталогам в соответствии с датой и пользователем, что бы файл
20120209_Operator12_192.168.1.1_163404.log переместился в ./2012/20/29/Operator1/ и имя преобразовалось в 16.34.04_192.168.1.1.log


Сейчас добился того, что распарсивается дата, и юзер(тупо по позиции и количеству знаков):

@Echo Off

reg add "HKLM\Software\Microsoft\Command Processor" /f /v DisableUNCCheck /t REG_DWORD /d 1

SetLocal EnableDelayedExpansion
:: Обрабатываемая папка
Set Folder=.\RAW
:: папка назначения
Set Out=.

For /R "%Folder%" %%i In (*.log) Do (
Set ti=%%~ni
MD "%Out%\!ti:~0,4!\!ti:~4,2!\!ti:~6,2!\!ti:~9,10!" 2>Nul
Copy "%%i" "%Out%\!ti:~0,4!\!ti:~4,2!\!ti:~6,2!\!ti:~9,10!\!ti:~20,50!.log">Nul
del "%%i"

)

::Pause>Nul

Хочется добиться того, чтобы юзер вынимался независимо от длины имени и в полученном файле дату получить в более удобоваримом виде.

Что бы из

.\RAW\20120209_Operator12_192.168.1.1_163404.log
.\RAW\20120209_User2_192.168.100.25_160823.log

Получить
.\2012\02\09\User2\16.08.23_192.168.100.25.log
.\2012\02\09\Operator12\16.34.04_192.168.1.1.log

Отправлено: 19:03, 09-02-2012

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

Set From=.\Raw
Set To=.
Set Mask=*_*_*_*.log

If Exist "%From%\%Mask%" FOR /F "usebackq tokens=1,2,3,4,5 delims=_" %%a IN (`Dir "%From%\%Mask%" /B /A:-D`) DO (
   Set Dt=%%a
   Set Tm=%%d
   Set NTo=%To%\!Dt:~0,4!\!Dt:~4,2!\!Dt:~6,2!\%%b
   If Not Exist "!NTo!\*.*" Md "!NTo!"
   Move /Y "%From%\%%a_%%b_%%c_%%d" "!NTo!\!Tm:~0,2!.!Tm:~2,2!.!Tm:~4,2!_%%c!Tm:~6,99!"
)
В имени юзера не должно быть _ иначе решение не годится

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


Последний раз редактировалось megaloman, 10-02-2012 в 11:22. Причина: Оптимизация кода


Отправлено: 20:22, 09-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Cпасибо огромное - работает!
Но единственное НО - только на локальном компьютере. При попытке выполнить на сетевом ресурсе не отрабатывает цикл....
Как победить?

Отправлено: 20:06, 21-02-2012 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Разложить файлы из кучи по каталогам согласно образцу Maartimus Скриптовые языки администрирования Windows 18 14-07-2012 13:37
Непонятки с пользовательским каталогам в домене Vilik Microsoft Windows NT/2000/2003 2 19-11-2011 14:24
Управление доступом к файлам и каталогам dascon Microsoft Windows NT/2000/2003 15 02-09-2008 01:50
Рейтинг обращений к каталогам ValVlaGen Программное обеспечение Windows 0 24-04-2008 08:41
Распределение доступа к каталогам на домашнем компьютере?.. Андрей Рябухин Microsoft Windows 2000/XP 13 01-08-2002 11:41




 
Переход