Показать полную графическую версию : [решено] Разобрать txt, на строки и назначить каждой переменную
campbell
23-11-2011, 16:41
Наверно, вопрос из разряда глупых, есть файлик 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
похоже это настолько просто, что мастерам лень писать ))
Вы определитесь, что Вам конкретно нужно, а то у Вас техзадание чересчур противоречивое:
текст4 текст5 текст6
ориентиром для него тоже служит некое слово или знак "," например.
Давайте не будем гадать: пробел, «некое слово» или «знак ","». Приведите исходные данные, пример реального файла, что нужно получить на выходе.
Про русский язык я уже промолчу.
campbell
25-11-2011, 21:17
не знаю как разобрать следующее
пример:
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.......
за русский язык извиняюсь )
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
Работает спасибо!
Правда не понял, как определяется переменная A.
Правда не понял, как определяется переменная A. »
campbell, через промежуточную переменную отрезаются два «лишних» символа — запятая и пробел — «, ».
Добавьте в:
set sTemp=%%j
set a=!sTemp:~0,-2!
вывод «sTemp»:
set sTemp=%%j
echo sTemp = [!sTemp!]
set a=!sTemp:~0,-2!
и прочтите о замене текста в:
set /?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.