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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] VBS - переменные файла

Пользователь


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


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

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


Как заставить VBS скрипт читать переменные из файла?
Есть файл var.cfg в нем примерно такой текст

anyVar=VARHERE
another.var1=Var1
another.var2=Var2

и тд. Тоесть

название.переменной=значение переменной

В java такое точно есть но нужно через VBS

Отправлено: 07:42, 10-10-2012

 

Ветеран


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

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


Ragnazar, в VBScript переменные не могут содержать точку:
Код: Выделить весь код
Naming Restrictions
Variable names follow the standard rules for naming anything in VBScript. A variable name: 
* Must begin with an alphabetic character. 
* Cannot contain an embedded period. 
* Must not exceed 255 characters. 
* Must be unique in the scope in which it is declared.
В остальном — пожалуйста:
Код: Выделить весь код
Option Explicit

Dim strContent
Dim strLine

With WScript.CreateObject("Scripting.FileSystemObject")
	With .OpenTextFile("E:\Песочница\0182\var.cfg")
		For Each strLine In Split(.ReadAll(), vbCrLf)
			WScript.Echo "Var name:", Split(strLine, "=")(0), vbTab, "Var value:", Split(strLine, "=")(1)
			
			Execute strLine
			'…or ExecuteGlobal strLine
		Next
		
		.Close
	End With
End With

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

Отправлено: 07:58, 10-10-2012 | #2



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

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


Пользователь


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

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


Работает. Но есть два недочета
1) Пишет значение только первой строчки.
var.cfg
var1=AnyVar
var2=VarHere

Выход
Var name: var1 Var value: AnyVar
var2

2) После нажатия ОК выдает ошибку
Строка: 11
Символ: 4
Ошибка: Недопустимый знак

Самому разобрать и понять скрипт пока не получилось и я просто скопировал

Отправлено: 08:30, 10-10-2012 | #3


Ветеран


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

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


Цитата Ragnazar:
Работает. Но есть два недочета
1) Пишет значение только первой строчки.
var.cfg
var1=AnyVar
var2=VarHere
Выход
Var name: var1 Var value: AnyVar
var2 »
У меня на приведённом примере:
Цитата:
Код: Выделить весь код
Var name: var1 	 Var value: AnyVar
Var name: var2 	 Var value: VarHere
Цитата Ragnazar:
2) После нажатия ОК выдает ошибку
Строка: 11
Символ: 4
Ошибка: Недопустимый знак »
Ragnazar, полагаю, дело по-прежнему в именовании переменных. Выложите файл «var.cfg», упаковав его в архив.

P.S. Я предпочитаю исполнять скрипты под cscript.exe.

Отправлено: 08:59, 10-10-2012 | #4


Пользователь


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

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


Странно но вторая проблема прошла сама. Но вторая сточка все так-же выдает только var2
А и можно - ли сделать что-бы эти переменные можно-было использовать далее?? Не только в пределах
WScript.Echo "Var name:", Split(strLine, "=")(0), vbTab, "Var value:", Split(strLine, "=")(1)

Отправлено: 14:49, 10-10-2012 | #5


Пользователь


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

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


Вложения
Тип файла: zip var.zip
(172 байт, 7 просмотров)


var.cfg

Отправлено: 14:51, 10-10-2012 | #6


Ветеран


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

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


Цитата Ragnazar:
Но вторая сточка все так-же выдает только var2 »
Как я и предполагал — Ваш файл «var.cfg» в качестве разделителя строк использует не стандартные для Windows «CrLf», а только «Lf», использование которых характерно для Unix [оттого-то я и просил не просто выложить содержимое файла на форум, а хотел увидеть именно сам файл и именно в архиве, дабы сохранить его целостность для последующего анализа]. Потому Вы и видели в выводе:
Код: Выделить весь код
Var name: var1 Var value: AnyVar
var2
одну лишь, единственную переменную — var1, со значением AnyVar ↵var2 (где «↵» — Lf, LineFeed).

Выход: использовать в функции Split() разделитель «vbLf» вместо «vbCrLf», либо перейти использование в файле «var.cfg» стандартных для Windows разделителей строк.

Цитата Ragnazar:
А и можно - ли сделать что-бы эти переменные можно-было использовать далее?? Не только в пределах
WScript.Echo "Var name:", Split(strLine, "=")(0), vbTab, "Var value:", Split(strLine, "=")(1) »
А как Вы будете заранее знать, какие в файле переменные?

Опишите, что именно Вы хотите получить. Хранение значений некоторых, заранее известных, переменных между запусками скрипта?

Отправлено: 08:50, 11-10-2012 | #7


Пользователь


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

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


Будет лишь один скрипт а вот var.cfg будет гулять и меняться
Скрипт будет дописан с учетом всех переменных.
Лишние переменные не будут использоваться а те что отсутствуют будут с ошибками либо скрипт не продолжит работу

Отправлено: 15:28, 13-10-2012 | #8


Ветеран


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

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


Ragnazar, понятней не стало.

Отправлено: 17:04, 13-10-2012 | #9


Пользователь


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

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


Скрипт будет основан на выведении данных в виде
Товар:%var1% Статус:%var1s%
И при добавлении новых строк в конфиг будет больше строк выводиться
Если в конфиге 4 товара
Товар:Некийтовар Статус:ОК
Товар:Другойтовар Статус:ОК
Товар:Ещетовар Статус:Нет
Товар:Товар Статус:

cfg
var1=Некийтовар
var1s=ОК
var2=Другойтовар
var2s=ОК
var3=Ещетовар
var3s=Нет
var4=Товар
var4s=

Отправлено: 19:14, 13-10-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Добавление пути(ей) в системные переменные (path) с помощью cmd-файла bearmvz Скриптовые языки администрирования Windows 10 05-08-2012 15:21
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
Прочее - Переменные RasKolbas Общий по Linux 8 23-07-2010 18:12
Разное - [PHP] Переменные CXREF Программирование и базы данных 2 16-06-2009 08:15
Переменные в PHP Guest Вебмастеру 1 10-01-2003 13:48




 
Переход