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

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

Ответить
Настройки темы
CMD/BAT - [решено] Последнее значение в строке

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


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


Конфигурация

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


Изменения
Автор: ncmps
Дата: 29-06-2015
Описание: дополнено
Добрый день! прошу о помощи. Долго искал, но так и не нашёл подходящего решения для задачи.
Есть текстовый файл в который скидываются данные в одну строку в виде:

Код: Выделить весь код
---------- 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. Соответственно и кол-во значений до последнего тоже постоянно будет разным.

Отправлено: 13:18, 29-06-2015

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

<temp.txt set /p "text="

for %%i in (%text:/=" %) do set "res=%%~i"

echo %res: =%
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 29-06-2015 | #2



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

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


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


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

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


Спасибо. А можно хотя бы краткий комментарий по каждой из строк? )

Отправлено: 14:04, 29-06-2015 | #3


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


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

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


Не работает в общем скрипте :\

Код: Выделить весь код
@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

и т.д.
Что я упускаю? (

Отправлено: 17:40, 29-06-2015 | #4


Ветеран


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

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


Цитата 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

.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:52, 29-06-2015 | #5


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


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

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


Цитата Georgio:
А Вы уверены, что в лог-файле присутствует текущая дата ("%date%"), которую Вы ищете? Если уверены, то попробуйте такой "общий скрипт": »
Да, в общий лог ежедневно сыплется куча событий из которых мне собственно и надо выдирать первое и последнее на текущую дату по username.

Спасибо, буду пытаться разобраться.

Отправлено: 12:06, 30-06-2015 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
CMD/BAT - Как получить значение искомой подстроки в строке? Loki3D Скриптовые языки администрирования Windows 11 24-02-2018 08:37
CMD/BAT - Удалить последнее слово в строке AlekseyB. Скриптовые языки администрирования Windows 15 12-09-2013 10:28
Загрузка - XP SP3. Значение «громкость» сбрасывается в среднее значение при перезагрузке. mitkadritka Microsoft Windows 2000/XP 9 24-02-2012 20:37
последнее сообщение Dimas_83 О сайте и форуме 2 04-07-2006 10:57




 
Переход