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

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

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

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


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

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


Изменения
Автор: pzh2393
Дата: 03-12-2011
Помогите, пожалуйста, со скриптом на VBS, который бы выводил последние два байта файла в текстовом виде.

Код: Выделить весь код
Dim fso, objFile

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.OpenTextFile(filename)

objFile.Skip(0)
 If not objFile.AtEndOfStream Then
  content_str = bjFile.Read(2)
  content=Replace(content_str,Chr(0)," ")
 End If
objFile.Close
Этот скрипт выводит два байта с начала, а вот как сделать это для конца файла - ума не приложу!

Отправлено: 12:42, 02-12-2011

 

Ветеран


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

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


На PowerShell:
Код: Выделить весь код
Get-Content C:\file.txt -Encoding Byte | Select-Object -Last 2
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:56, 05-12-2011 | #2



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

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


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


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

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


Благодарю, но к сожалению не подошло.

Объясню более детально для чего необходимо...
Скрипт нужен для подключения к плагину Тотала: http://wincmd.ru/plugring/script_wdx.html
Поскольку иных плагинов позволяющих читать файл в HEX виде и выводить в колонку Тотала (нужна сортировка по значению) Гугл не знает, приходится заниматься хирургией гланд через место в которое не светит солнце!

Отправлено: 21:47, 05-12-2011 | #3


Ветеран


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

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


pzh2393, вот Вам скрипт, «прикручивайте» сами:
Код: Выделить весь код
Option Explicit

Dim strFileName
Dim intByteCount

Dim objFSO
Dim objSpeechFileStream

Dim lngLength
Dim arrBuff


strFileName  = "C:\WINDOWS\notepad.exe"
intByteCount = 2

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objSpeechFileStream = WScript.CreateObject("SAPI.SpFileStream")

If objFSO.FileExists(strFileName) Then
	lngLength = objFSO.GetFile(strFileName).Size
	
	With objSpeechFileStream
		.Open strFileName
		
		On Error Resume Next
		
		.Seek lngLength - intByteCount
		
		If Err.Number = 0 Then
			On Error Goto 0
			
			If .Read(arrBuff, intByteCount) = intByteCount Then
				WScript.Echo ConvertByteArray2HexString(arrBuff)
			End If
		Else
			On Error Goto 0
		End If
		
		.Close
	End With
Else
	' Nothing to output
End If

WScript.Quit 0

'=============================================================================
Function ConvertByteArray2HexString(arrByteArray)
	Dim i
	Dim strValue
	
	strValue = ""
	
	For i = 1 To LenB(arrByteArray)
		strValue = strValue & Right("00" & Hex(AscB(MidB(arrByteArray, i, 1))), 2)
	Next
	
	ConvertByteArray2HexString = strValue
End Function
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:48, 06-12-2011 | #4


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


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

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


Большое спасибо!
Правда скрипт выдает ошибку "Expected statement"... не подскажете что это, в каком месте пытаться поправить?

Отправлено: 15:13, 06-12-2011 | #5


Ветеран


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

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


В окне сообщения об ошибке нажмите Ctrl-C, затем вставьте полученный текст из буфера обмена сюда. Если как-то меняли код — приведите и его.

Отправлено: 16:09, 06-12-2011 | #6


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


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

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


В коде ничего не менял...
При запуске из под "окон" возвращает значение "4444", что оно значит тоже непонятно, в колонке Тотала дважды пишет - "Expected statement Expected statement" для любых типов файлов.

Отправлено: 18:21, 06-12-2011 | #7


Ветеран


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

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


Цитата pzh2393:
При запуске из под "окон" возвращает значение "4444", что оно значит тоже непонятно, »
Правильно, это и есть два последних байта файла «c:\windows\notepad.exe» в шестнадцатеричном представлении.

Цитата pzh2393:
в колонке Тотала дважды пишет - "Expected statement Expected statement" для любых типов файлов. »
Я привёл образец кода для:
Цитата pzh2393:
который бы выводил последние два байта файла в текстовом виде. »
Прикручивать его к TC я не планировал и не обещал. Смотрите документацию к плагину и готовые примеры.

Отправлено: 21:36, 06-12-2011 | #8


Ветеран


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

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


pzh2393, как сделаете — можете сюда же выложить проделанные Вами действия по подключению.

Отправлено: 12:20, 07-12-2011 | #9


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


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

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


2Iska
В теме посвященной вопросам работы плагина помогли адаптировать Ваш скрипт...
Код: Выделить весь код
With CreateObject("SAPI.SpFileStream")
  .Open FileName
  .Seek CreateObject("Scripting.FileSystemObject").GetFile(FileName).Size - 2
  If .Read(F, 2) = 2 Then
    For i = 1 To LenB(F)
      Content = Content & "  " & Right("00" & Hex(AscB(MidB(F, i, 1))), 2)
    Next
  End If
  .Close
End With
"Content = " отвечает за вывод значения в колонку Тотала, а "FileName" - для всех файлов.

Подключение к Total Commander:

script.wdx подключается либо обычным способом через "Конфигурация => Настройки => Плагины => WDX.Настройка => Добавить"
либо ручным прописыванием в wincmd.ini строчек
[ContentPlugins]
0=%COMMANDER_PATH%\PLUGINS\wdx\script\script.wdx

script.ini плагина должен выглядеть примерно так:
Код: Выделить весь код
[Script]
Section=NAME

[NAME]
Script=name.vbs
LongName=1
ParseDirs=0
В самом Тотале создается новый набор колонок "Конфигурация => Настройки => Набор колонок => Новый"
где в любую колонку вписывается [=script.Result], [=script.Result1], [=script.Result2] и тд. в зависимости сколько значений возвращает скрипт ("Content = ", "Content1 = ", "Content2 = " и тд.).

Проверил данный код в Тотал - работает!

Пы.Сы. Ещё раз благодарю, без Вашего кода никто не брался за такую задачу.

Последний раз редактировалось pzh2393, 08-12-2011 в 13:40.

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

Отправлено: 11:12, 08-12-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] замена строчки в файле Bint Скриптовые языки администрирования Windows 4 15-10-2009 10:24
[решено] Замена строчки в bat файле на несколько других ZeroCrash AutoIt 4 02-07-2009 04:12
CMD/BAT - [решено] Отделить последние цифры из строчки в текстовом файле ZeroCrash Скриптовые языки администрирования Windows 4 29-06-2009 16:03
Редактирование строчки в файле slaine Вебмастеру 5 10-08-2005 00:36
Delphi - Delphi | Ресурсы и поиск в файле Borislav Программирование и базы данных 1 10-02-2005 09:30




 
Переход