|
|
Последнее значение в строке
Добрый день! прошу о помощи. Долго искал, но так и не нашёл подходящего решения для задачи.
Есть текстовый файл в который скидываются данные в одну строку в виде:
Код:
---------- TESTLOG.TXT/23.06.2015-username-18:15:18,31-unblocked//23.06.2015-username-20:53:08,33-unblocked//23.06.2015-username-20:53:08,43-unblocked/ /23.06.2015-username-20:53:08,77-unblocked/ /23.06.2015-username-20:53:08,93-unblocked//23.06.2015-username-20:53:15,52-unblocked//23.06.2015-username-20:53:16,83-unblocked//23.06.2015-username-21:04:48,97-unblocked/
Необходимо из этой строки забирать первое и последнее значения между разделителями "/"
С первым значением всё просто:
Код:
for /f "tokens=2 delims=/" %%a in (temp.txt) do echo %%a>>username.txt"
А вот как выдирать последнее значение из строки так и не могу понять. Т.е. в данном примере последним значением должно быть записано:
Код:
23.06.2015-username-21:04:48,97-unblocked
При этом все значения могут меняться и быть разными, за исключением username. Соответственно и кол-во значений до последнего тоже постоянно будет разным.
|
Код:
@echo off
setlocal
<temp.txt set /p "text="
for %%i in (%text:/=" %) do set "res=%%~i"
echo %res: =%
|
Спасибо. А можно хотя бы краткий комментарий по каждой из строк? )
|
Не работает в общем скрипте :\
Код:
@echo off
set temp=temp.txt
set log=log.txt
set user1=name1
set user2=name2
set user3=name3
set user4=name4
set user5=name5
::user1
for /f "delims=" %%i in ('find "/%date%-%user1%-" %log%') do <nul Set /p $V=%%i>>"%temp%"
for /f "tokens=2 delims=/" %%a in (%temp%) do echo %%a >> %user1%.txt"
setlocal
<temp.txt set /p "text="
for %%i in (%text:/=" %) do set "res=%%~i"
echo %res: =% >> %user1%.txt"
endlocal
if exist "%temp%" del "%temp%" /f /q
::user2
for /f "delims=" %%i in ('find "/%date%-%user2%-" %log%') do <nul Set /p $V=%%i>>"%temp%"
for /f "tokens=2 delims=/" %%a in (%temp%) do echo %%a>>%user2%.txt"
setlocal
<temp.txt set /p "text="
for %%i in (%text:/=" %) do set "res=%%~i"
echo %res: =% >> %user2%.txt"
endlocal
if exist "%temp%" del "%temp%" /f /q
::user3
и т.д.
Что я упускаю? (
|
Цитата:
Цитата ncmps
Не работает в общем скрипте »
|
.
А Вы уверены, что в лог-файле присутствует текущая дата ("%date%"), которую Вы ищете? Если уверены, то попробуйте такой "общий скрипт":
Код:
@echo off
set "log=log.txt"
set "$user1=name1"
set "$user2=name2"
set "$user3=name3"
set "$user4=name4"
set "$user5=name5"
:: и. т. д.
for /f %%i in ('set $user^| find/c /v ""') do (
for /l %%j in (1 1 %%i) do (
for /f "delims=/" %%k in ('^<"%log%" cmd/v/c find "/%date%-!$user%%j!-"') do (
set/a n+=1
cmd/v/c echo !n!| >nul findstr/x 1&& cmd/v/c ">"!$user%%j!.txt" echo %%k"|| set x=%%k
)
if defined x cmd/v/c ">>"!$user%%j!.txt" echo !x!"
set x=& set n=
)
)
exit/b
.
|
Цитата:
Цитата Georgio
А Вы уверены, что в лог-файле присутствует текущая дата ("%date%"), которую Вы ищете? Если уверены, то попробуйте такой "общий скрипт": »
|
Да, в общий лог ежедневно сыплется куча событий из которых мне собственно и надо выдирать первое и последнее на текущую дату по username.
Спасибо, буду пытаться разобраться.
|
Время: 23:45.
© OSzone.net 2001-