VBScript Отказано в разрешении
Я пытаюсь сделать некоторую автоматизацию на SecureCRT, используя VBScript. Моя проблема сейчас заключается в том, что примерно в 30% случаев, когда я пытаюсь запустить свой сценарий (иногда на собраниях для представления...), я получаю ошибку "Отказано в доступе".
В большинстве случаев быстрое решение заключается в том, что я копирую и вставляю свой скрипт в новый файл.txt. В конце концов старый снова работает, но он невероятно привередлив. Сегодня мой сценарий сработал. Через 5 минут я получил отказано в разрешении. Я создал ревизию, которая сработала. 5 минут спустя тот из них ошибся, и оригинальная версия перестала давать мне ошибку. Трудно отследить, и я не уверен, что это вызвало.
Редактировать: ошибка в этой строке.
Set pso = CreateObject("Scripting.FileSystemObject")
Set Pile = pso.OpentextFile("Alarm_logs.txt",8, True)
Это очень близко к началу сценария.
У кого-нибудь был подобный опыт?
1 ответ
Проблема заключается в том, что вы не указываете полный путь, поэтому фактический путь к файлу, который вы пытаетесь записать, зависит от того, как вы запустите скрипт.
если вы дважды щелкнете по VBS, он будет запущен из% windir%, где у вашего пользователя нет прав на запись.
Если вы открываете cmd, перейдите в папку, где вы можете написать и запустить
wscript pathtoyourvbs\yourfile.vbs
тогда ваш файл будет создан в текущей папке без ошибки "Отказано в разрешении".
Если вы хотите быть уверенным в том, где создан ваш файл, вы должны указать абсолютный путь, а не относительный.
Для этого вы можете использовать переменные окружения или, возможно, начать с получения папки, в которой находится VBS, и использовать ее, чтобы построить свой путь и получить созданный файл рядом с.vbs:
scriptdir = replace(WScript.ScriptFullName,WScript.ScriptName,"")
Set pso = CreateObject("Scripting.FileSystemObject")
Set Pile = pso.OpentextFile(scriptdir+"\Alarm_logs.txt",8, True)