Я не понимаю этого поведения.Может быть, кто-то может объяснить мне, почему мой текущий рабочий каталог не соответствует ожиданиям.
На моем рабочем столе у меня есть папка с именем STKGui:
C: \ Documents and Settings \ Lauren \ Desktop\ STKGui
В этом каталоге находятся следующие файлы: gui.html, style.css, save.html, load.html В STKGui также есть следующие каталоги: Images, Scripts и SaveData.Скрипты содержат различные файлы .vbs, включая gui.vbs.
Я начинаю с gui.html.Я нажимаю кнопку, которая приводит меня к load.html.load.html использует скрипты из Scripts \ gui.vbs.Одна из функций загружает базу данных, и для этого я указываю местоположение базы данных: C: \ Documents and Settings \ Lauren \ Desktop \ STKGui \ SaveData \ SaveData.accdb. Конечно, я хочу использовать относительный путь к файлу вместофиксированный путь.Моя первоначальная попытка загрузить базу данных не удалась;он пытался загрузить из C: \ Documents and Settings \ Lauren \ Desktop \ SaveData \ SaveData.accdb.Поэтому для устранения неполадок я распечатал текущий рабочий каталог;к моему большому огорчению, это был C: \ Documents and Settings \ Lauren \ Desktop
Я не понимаю, почему мой рабочий стол - это мой текущий рабочий каталог.Разве это не должно быть, откуда файл работает?Я подумал, что это будет C: \ Documents and Settings \ Lauren \ Desktop \ STKGui (расположение load.html) ИЛИ C: \ Documents and Settings \ Lauren \ Desktop \ STKGui \ Scripts (расположение gui.vbs, которое содержитфункция, которая пытается загрузить базу данных / печатать отладочные сообщения текущего рабочего каталога).
Может кто-нибудь объяснить, почему текущий рабочий каталог такой, какой он есть, или еще лучше сказать мне, как получить то, что я действительно хочугде находится исполняемый файл?(Мне все равно, является ли это основной папкой STKGui или папкой сценариев - если она находится в структуре каталога приложения, я могу с ней работать!)
РЕДАКТИРОВАТЬ (14.07.10)16:02 ПО ВОСТОЧНОМУ ВРЕМЕНИ):
Различные попытки печати текущего рабочего каталога или получения файлов, основанные на том, что, как я думал, был относительным путем из моего исполняемого скрипта, привели к тому, что путь к моему рабочему столу вместо путивыполненный скрипт.Я наткнулся на эту ссылку: http://leereid.wordpress.com/2008/03/19/vbscript-current-directory-or-folder/, но ни одно из решений не работает для меня, так как я получаю ошибки во время выполнения относительно объекта Wscript.Поэтому, хотя я не знаю, даст ли какое-либо из решений по вышеупомянутой ссылке разные результаты, если кто-то может помочь мне заставить хотя бы одного из них работать, чтобы я мог понять, что это может быть шагом в правильном направлении.
Одно из приведенных ниже решений:
Set oShell = CreateObject("WScript.Shell")
Set ofso = CreateObject("Scripting.FileSystemObject")
oShell.CurrentDirectory = ofso.GetParentFolderName(Wscript.ScriptFullName)
приводит к следующей ошибке:
Требуемый объект: строка 'Wscript': 659 символов: 1
со строкой 659:
oShell.CurrentDirectory = ofso.GetParentFolderName(Wscript.ScriptFullName)