Hronop
09-02-2012, 19:03
Привет! Помогите доточить скрипт.
Задача - есть в папочке 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
Задача - есть в папочке 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