Мне нужно проверить размер файла перед чтением файла.
Я пробовал несколько маршрутов с найденными кодами, кажется, мне нужно посмотреть на .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)
Правильно, это проблема, почему я сначала пытаюсь проверить размер файла или добавить что-то в строку, чтобы она не была пустой. К сожалению, ничего не работает в hta.
Я имел в виду, что вместо проверки размера файла вы можете проверить, пуста ли эта строка.
Ах, как плохо, я только что попробовал это с Леном, но делать это до того, как strBatteryParse1 = objFileToRead.ReadAll(), конечно, бесполезно, и я не могу пройти эту строку. (извините, очень любитель в кодировании, это чудо, что я так далеко продвинулся).
objFile.Size - правильный способ сделать это. Пожалуйста, покажите код, который на самом деле использует его, и объясните, как именно проявляется «неуспех», и мы сможем помочь вам улучшить его.
.Size не распознается как функция в hta, но работает в .vbs
@Rizzah .Size является свойством объектов File (через экземпляры FileSystemObject). Не существует внутренних ограничений, препятствующих использованию экземпляров FileSystemObject в HTA. Пожалуйста, следуйте совету из моего предыдущего комментария.
@AnsgarWiechers, ты был прав. чтобы получить его как распознаваемую функцию, мне нужно было использовать Set objFile = CreateObject("Scripting.FileSystemObject").GetFile вместо goFS
Назначьте экземпляр FileSystemObject переменной, а затем используйте эту переменную: Set fso = CreateObject("Scripting.FileSystemObject") : Set f = fso.GetFile("...").





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