|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем |
|
CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем
|
Новый участник Сообщения: 2 |
Привет! Помогите доточить скрипт.
Задача - есть в папочке 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 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Cпасибо огромное - работает!
Но единственное НО - только на локальном компьютере. При попытке выполнить на сетевом ресурсе не отрабатывает цикл.... Как победить? |
Отправлено: 20:06, 21-02-2012 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|