Имя пользователя:
Пароль:
 | Правила  

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

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

Аватара для Elven

Ветеран


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

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


Изменения
Автор: Elven
Дата: 05-02-2015
Было дело спрашивал как прочитать файл на vbs в переменную. Тогда скрипт отработал свое на "ура", а теперь, почему-то не хочет. Вроде как в пьяном угаре ничего не менял, но мало ли.
В общем теперь почему-то переменная возвращает "1" (без кавычек)
Просьба указать где я не прав.
Код: Выделить весь код
01 Option Explicit
02 Dim strSourceFile
03 Dim oShell
04 Dim objFSO
05 Dim strLine
06 
07 Set oShell = WScript.CreateObject("WScript.Shell")
08 
09 strSourceFile = "IP.txt"
10
11 With WScript.CreateObject("Scripting.FileSystemObject")
12	If .FileExists(strSourceFile) Then
13		With .OpenTextFile(strSourceFile)
14			Do Until .AtEndOfStream
15				strLine = .ReadLine()
16
17 oShell.Run "putty.exe"
18 WScript.Sleep 300
19 oShell.SendKeys strLine
20 WScript.Sleep 300
21 oShell.SendKeys "%g"
22 WScript.Sleep 300
23 oShell.SendKeys "{DOWN}"
24 WScript.Sleep 300
25 oShell.SendKeys "%l"
26 WScript.Sleep 300
27 oShell.SendKeys "%f" & "D:\logs\&H.log"
28 WScript.Sleep 300
29 oShell.SendKeys "%o"
30 WScript.Sleep 3000
31 oShell.SendKeys "user" & chr(13)
32 WScript.Sleep 300
33 oShell.SendKeys "P@$$w0rd" & chr(13)
34 WScript.Sleep 300
35 oShell.SendKeys "show ver | inc Serial" & chr(13)
36 WScript.Sleep 300
37 oShell.SendKeys "exit" & chr(13)
38
39
40				Loop
41			
42			.Close
43		End With
44	Else
45		WScript.Echo "Can't find [" & strSourceFile & "]."
46		WScript.Quit 1
47	End If
48 End With
49
50 WScript.Quit 0

Отправлено: 12:36, 05-02-2015

 

Ветеран


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

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


Цитата Elven:
В общем теперь почему-то переменная возвращает "1" (без кавычек) »
Про что речь? Про «strLine» вот здесь:
Код: Выделить весь код
strLine = .ReadLine()
?

Отправлено: 13:12, 05-02-2015 | #2



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

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


Аватара для Elven

Ветеран


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

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


Вот здесь
Код: Выделить весь код
19 oShell.SendKeys strLine

Отправлено: 13:21, 05-02-2015 | #3


Ветеран


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

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


Elven, тогда вовсе не могу понять изложенного:
Цитата Elven:
теперь почему-то переменная возвращает "1" (без кавычек) »
Поясните, что Вы имеете в виду.

Отправлено: 13:39, 05-02-2015 | #4


Аватара для Elven

Ветеран


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

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


скрипт должен брать построчно данные из файла (IP.txt), запускать "putty.exe" и передавать открывшемуся окну значение находящееся в переменной.
именно в этот момент окну "putty.exe" передается значение "1"
Файл IP.txt - существует, путь к нему я пытался указывать и относительный и абсолютный, результат один - "1". (извините за каламбур)

Отправлено: 14:04, 05-02-2015 | #5


Ветеран


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

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


Elven, я никогда не рассчитывал на гарантированную работу «.SendKeys».
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:46, 05-02-2015 | #6


Аватара для Elven

Ветеран


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

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


Обрезал то что все равно не имеет значения.
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim oShell

Dim objFSO
Dim strLine

Set oShell = WScript.CreateObject("WScript.Shell")

strSourceFile = "IP.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strSourceFile) Then
		With .OpenTextFile(strSourceFile)
			Do Until .AtEndOfStream
				strLine = .ReadLine()
WScript.Echo strLine
				Loop
			
			.Close
		End With
	Else
		WScript.Echo "Can't find [" & strSourceFile & "]."
		WScript.Quit 1
	End If
End With

WScript.Quit 0
В файле оставил один IP. Вот что получил на выходе:

Последний раз редактировалось Elven, 05-02-2015 в 15:27.


Отправлено: 15:02, 05-02-2015 | #7


Ветеран


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

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


Elven, упакуйте Ваш файл «IP.txt» в архив, выложите на RGhost. Ссылку — сюда.

Отправлено: 15:50, 05-02-2015 | #8


Аватара для Elven

Ветеран


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

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


ссылко

Отправлено: 16:12, 05-02-2015 | #9


Ветеран


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

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


Elven, Ваш файл в кодировке Unicode LE/1200. Просто сохраните его в ANSI/1251.

Ситуация, кстати, интересная…
Например, метод «.OpenTextFile()» объекта «Scripting.FileSystemObject»:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const TristateTrue       = -1


Dim strSourceFile
Dim strLine


strSourceFile = "E:\Песочница\0429\IP.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strSourceFile) Then
		With .OpenTextFile(strSourceFile, ForReading, TristateTrue)
			Do Until .AtEndOfStream
				strLine = .ReadLine()
				WScript.Echo strLine
			Loop
			
			.Close
		End With
	Else
		WScript.Echo "Can't find [" & strSourceFile & "]."
		WScript.Quit 1
	End If
End With

WScript.Quit 0

несмотря на параметры, открывает файл как ANSI/1251, со всеми вытекающими.

А вот если использовать, казалось бы, вполне аналогичный же метод «.OpenAsTextStream» объекта «File»:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const TristateTrue       = -1


Dim strSourceFile
Dim strLine


strSourceFile = "E:\Песочница\0429\IP.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strSourceFile) Then
		With .GetFile(strSourceFile).OpenAsTextStream(ForReading, TristateTrue)
			Do Until .AtEndOfStream
				strLine = .ReadLine()
				WScript.Echo strLine
			Loop
			
			.Close
		End With
	Else
		WScript.Echo "Can't find [" & strSourceFile & "]."
		WScript.Quit 1
	End If
End With

WScript.Quit 0

с теми же параметрами — то всё отрабатывает как положено. Пожалуй, в первый раз сталкиваюсь с подобным поведением.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:44, 05-02-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Построчное чтение файла и запись в другой acefoster Скриптовые языки администрирования Windows 11 28-03-2024 08:02
[решено] Построчное чтение файла в Bash FATruden Программирование в *nix 11 19-05-2017 00:44
VBS/WSH/JS - [решено] Построчное чтение "большого" файла и замена символов phenoMANon Скриптовые языки администрирования Windows 6 23-08-2013 10:44
CMD/BAT - Чтение всего txt файла в переменную bat binwatch@vk Скриптовые языки администрирования Windows 10 09-09-2012 18:57
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42




 
Переход