![]() |
файлы разобрать по каталогам в соответствии с датой и пользователем
Привет! Помогите доточить скрипт.
Задача - есть в папочке 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 |
Код:
@Echo Off |
Cпасибо огромное - работает!
Но единственное НО - только на локальном компьютере. При попытке выполнить на сетевом ресурсе не отрабатывает цикл.... Как победить? |
Время: 13:29. |
Время: 13:29.
© OSzone.net 2001-