В разрешении vbscript отказано

Я пытаюсь автоматизировать SecureCRT с помощью VBScript. Моя проблема сейчас в том, что примерно в 30% случаев, когда я пытаюсь запустить свой сценарий (иногда на собраниях для презентации ...), я получаю ошибку «В разрешении отказано».

В большинстве случаев быстрое решение состоит в том, что я копирую и вставляю свой скрипт в новый файл .txt. В конце концов старый снова работает, но он невероятно привередлив. Сегодня мой сценарий заработал. Через 5 минут мне отказали в разрешении. Я создал ревизию, которая заработала. Через 5 минут в одной из них возникла ошибка, и исходная версия перестала выдавать мне ошибку. За этим трудно уследить, и я не уверен, что это вызывает.

Редактировать: Ошибка в этой строке.

Set pso = CreateObject("Scripting.FileSystemObject") 

Set Pile = pso.OpentextFile("Alarm_logs.txt",8, True) 

Это очень близко к началу скрипта. У кого-нибудь был подобный опыт?

Чтобы получить помощь с кодом: покажите свой код. Покажи тоже ошибку.

Ansgar Wiechers 10.08.2018 16:37

Ошибка в этой строке. Set pso = CreateObject("Scripting.FileSystemObject")Set Pile = pso.OpentextFile("Alarm_logs.txt",8, True) Это очень близко к началу сценария.

KuboMD 10.08.2018 16:47

@KuboMD включает код в исходный вопрос. Вы можете сделать это с помощью опции редактировать. Код в комментариях неясен, и комментарии не обязательно останутся навсегда.

user692942 14.08.2018 19:19
4
3
3 273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что вы не указываете полный путь, поэтому фактический путь к файлу, который вы пытаетесь записать, зависит от того, как вы запускаете скрипт.

если вы дважды щелкните vbs, он будет запущен из% windir%, где у вашего пользователя нет прав на запись.

Если вы откроете cmd, cd в папку, где вы можете написать и запустить

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)

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