Как проверить размер файла в HTA VBScript?

Мне нужно проверить размер файла перед чтением файла.

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

Пока это рабочий код (если в файле есть его содержимое):

<script for = "battery_parse_1" language = "VBScript">
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\core\outputs\vr1_output.log",1)

strBatteryParse1 = objFileToRead.ReadAll()
objFileToRead.Close
Set objFileToRead = Nothing

If InStr(strBatteryParse1, "EstimatedChargeRemaining") Then
    strBatteryParse1Output = Right(strBatteryParse1, 2)
    If strBatteryParse1Output < 10 Then
        strBatteryParse1Output = Right(strBatteryParse1Output, 1)
        1batteryresult.ClassName = "badge bg-red"
        1batteryresult.InnerHTML = "<i class='fa fa-battery-empty'></i> " + strBatteryParse1Output + "%"
    ElseIf strBatteryParse1Output < 25 Then
        1batteryresult.ClassName = "badge bg-red"
        1batteryresult.InnerHTML = "<i class='fa fa-battery-1'></i> " + strBatteryParse1Output + "%"
    ElseIf strBatteryParse1Output < 50 Then
        1batteryresult.ClassName = "badge bg-yellow"
        1batteryresult.InnerHTML = "<i class='fa fa-battery-2'></i> " + strBatteryParse1Output + "%"
    ElseIf strBatteryParse1Output < 75 Then
        1batteryresult.ClassName = "badge bg-yellow"
        1batteryresult.InnerHTML = "<i class='fa fa-battery-3'></i> " + strBatteryParse1Output + "%"
    Else
        1batteryresult.ClassName = "badge bg-green"
        1batteryresult.InnerHTML = "<i class='fa fa-battery-4'></i> " + strBatteryParse1Output + "%"
    End If
    strBatteryParse1Output = strBatteryParse1Output + "% Remaining"
    1batteryresult.Title = strBatteryParse1Output
Else
    strBatteryParse1Output = "No data yet..."
    1batteryresult.Title = strBatteryParse1Output
End If
Set objExec = Nothing
<script>

Когда удаленный компьютер находится в автономном режиме, процент заряда батареи не регистрируется в файле, и он будет пустым, что, конечно, приводит к сбою строки. Кажется, что любой код, который я вставил, чтобы проверить, равен ли размер файла 0 КБ, не работает в HTA.

Я экспериментировал с:

Set objFile = goFS.GetFile(examplefile)
If objFile.Size > 0 Then

но без особого успеха.

Обновлено: решение находится в комментариях Ансгара Вихерса. Hta требует использования

Set objFile = CreateObject("Scripting.FileSystemObject").GetFile

вместо

Set objFile = goFS.GetFile(examplefile)

Будет ли strBatteryParse1 пустым в автономном сценарии? Если это так, вы могли бы проверить это?

Flakes 29.01.2019 05:58

Правильно, это проблема, почему я сначала пытаюсь проверить размер файла или добавить что-то в строку, чтобы она не была пустой. К сожалению, ничего не работает в hta.

Rizzah 29.01.2019 06:08

Я имел в виду, что вместо проверки размера файла вы можете проверить, пуста ли эта строка.

Flakes 29.01.2019 06:18

Ах, как плохо, я только что попробовал это с Леном, но делать это до того, как strBatteryParse1 = objFileToRead.ReadAll(), конечно, бесполезно, и я не могу пройти эту строку. (извините, очень любитель в кодировании, это чудо, что я так далеко продвинулся).

Rizzah 29.01.2019 06:28
objFile.Size - правильный способ сделать это. Пожалуйста, покажите код, который на самом деле использует его, и объясните, как именно проявляется «неуспех», и мы сможем помочь вам улучшить его.
Ansgar Wiechers 29.01.2019 09:59

.Size не распознается как функция в hta, но работает в .vbs

Rizzah 29.01.2019 16:12

@Rizzah .Size является свойством объектов File (через экземпляры FileSystemObject). Не существует внутренних ограничений, препятствующих использованию экземпляров FileSystemObject в HTA. Пожалуйста, следуйте совету из моего предыдущего комментария.

Ansgar Wiechers 29.01.2019 19:18

@AnsgarWiechers, ты был прав. чтобы получить его как распознаваемую функцию, мне нужно было использовать Set objFile = CreateObject("Scripting.FileSystemObject").GetFile вместо goFS

Rizzah 29.01.2019 21:27

Назначьте экземпляр FileSystemObject переменной, а затем используйте эту переменную: Set fso = CreateObject("Scripting.FileSystemObject") : Set f = fso.GetFile("...").

Ansgar Wiechers 29.01.2019 21:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
92
0

Другие вопросы по теме