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)
Другие вопросы по тегам