Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Разобрать txt, на строки и назначить каждой переменную (http://forum.oszone.net/showthread.php?t=221302)

campbell 23-11-2011 16:41 1801773

Разобрать txt, на строки и назначить каждой переменную
 
Наверно, вопрос из разряда глупых, есть файлик txt
пример

текст1 текст1 текст1
текст2 текст2 текст2
текст3 текст3 текст3
текст4 текст5 текст6

Нужный скрипт состоящий из 2 разделов
1 - который разбирает по строкам и назначал строки в переменные
2 - текст4 текст5 текст6 разбирал бы на %A%=текст4, %B%= текст5, %С%=текст6, ориентиром для него тоже служит некое слово или знак "," например.
т.е. в начале скрипта задается не какая переменная и потом при разборе строк, упираясь в определенное в переменной слово, он бы делил строку на до и после этого слова, распределяя по разным переменным.
В конце он передает все переменные в другой bat-файл
Если можно разделить комментариями обе части скрипта

campbell 25-11-2011 00:31 1802772

похоже это настолько просто, что мастерам лень писать ))

Iska 25-11-2011 01:04 1802787

Вы определитесь, что Вам конкретно нужно, а то у Вас техзадание чересчур противоречивое:
Цитата:

Код:

текст4 текст5 текст6

Цитата:

ориентиром для него тоже служит некое слово или знак "," например.
Давайте не будем гадать: пробел, «некое слово» или «знак ","». Приведите исходные данные, пример реального файла, что нужно получить на выходе.

Про русский язык я уже промолчу.

campbell 25-11-2011 21:17 1803461

не знаю как разобрать следующее

пример:

User 150, user-online 50: Anay,Petay,Vasay,Sasha..... User offline- 100 Sergei,Stepan,Misha.......

в итоге
%A= User 150
%B =user-online 50: Anay,Petay,Vasay,Sasha.....
%C=User offline- 100 Sergei,Stepan,Misha.......

за русский язык извиняюсь )

Iska 26-11-2011 00:00 1803555

campbell, действительно такой разнобой:
Код:

user-online
User offline-

в логе?

Попробуйте так (без каких-либо проверок):
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=E:\Песочница\0093\0001.txt

set sDelim1=user-online
set sDelim2=User offline-

for /f "usebackq delims==" %%i in ("%sFile%") do (
        set sLine=%%i
        set sDelim1Line=!sLine:%sDelim1%=*!
        set sDelim2Line=!sDelim1Line:%sDelim2%=*!
       
        for /f "tokens=1-3 delims=*" %%j in ('echo !sDelim2Line!') do (
                set sTemp=%%j
                set a=!sTemp:~0,-2!
                set b=%sDelim1%%%k
                set c=%sDelim2%%%l

                echo A = [!a!]
                echo B = [!b!]
                echo C = [!c!]
        )
)

endlocal
exit /b 0

Я использовал приведённый Вами текст:
Код:

User 150, user-online 50: Anay,Petay,Vasay,Sasha..... User offline- 100 Sergei,Stepan,Misha.......
сохранив его в файле «E:\Песочница\0093\0001.txt».
Результат
Код:

A = [User 150]
B = [user-online 50: Anay,Petay,Vasay,Sasha..... ]
C = [User offline- 100 Sergei,Stepan,Misha.......]


campbell 26-11-2011 01:02 1803578

Работает спасибо!
Правда не понял, как определяется переменная A.

Iska 26-11-2011 01:32 1803592

Цитата:

Цитата campbell
Правда не понял, как определяется переменная A. »

campbell, через промежуточную переменную отрезаются два «лишних» символа — запятая и пробел — «, ».

Добавьте в:
Код:

                set sTemp=%%j
                set a=!sTemp:~0,-2!

вывод «sTemp»:
Код:

                set sTemp=%%j
                echo sTemp = [!sTemp!]
                set a=!sTemp:~0,-2!

и прочтите о замене текста в:
Код:

set /?


Время: 13:16.

Время: 13:16.
© OSzone.net 2001-