как ссылаться на домашнюю папку на Visual Basic скрипт - PullRequest
6 голосов
/ 05 октября 2010

Позвольте мне начать с того, что я - парень из Linux и не очень знаком с VBS или даже с глобальными переменными Windows.

Меня призывают обновить скрипт VBS, который в основном копирует последнюю версиюформы доступа к компьютеру.В настоящее время он помещает эту форму доступа в C: \ MedMaint.Проблема в том, что мы не работаем как администраторы в этом месте.Поэтому, когда новый пользователь пытается получить доступ к сценарию VBS, папка должна быть удалена исходным пользователем.Мне нужно изменить этот сценарий на эквивалент Linux для ~ / MedMaint или «C: \ Documents and Settings \ MyUserName \ Application Data \ MedMaint»

Вот пример кода

    If Not FSO.FileExists("c:\MedMaint\" & File.Name) Then
        FSO.CopyFile File.Path, "c:\MedMaint\"          ' copy the missing file
    Else 
        Set RPFile = FSO.GetFile("c:\MedMaint\" & File.Name)    ' Get the file object from the local object
        If (File.DateLastModified >= RPFile.DateLastModified) Then
            FSO.CopyFile File.Path, "c:\MedMaint\" 

Я хотел бы знать, как изменить ссылку c: \ MedMaint \ на домашнюю директорию пользователя

Ответы [ 3 ]

17 голосов
/ 05 октября 2010

Чтобы получить путь к папке профиля пользователя (например, C: \ Documents and Settings \ в Windows XP или C: \ Users \ в Windows Vista), вы можете выполнить любое из следующих действий:

  • Оценка переменной среды USERPROFILE с использованием метода WshShell.ExpandEnvironmentStrings:

    Set oShell = CreateObject("WScript.Shell")
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
    
  • Получить путь к папке, используя метод Shell.Namespace:

    Const ssfPROFILE = &H28
    Set oShell = CreateObject("Shell.Application")
    strHomeFolder = oShell.NameSpace(ssfPROFILE).Self.Path
    

Если вам нужен путь к папке с данными приложения (например, C: \ Documents and Settings \ \ Application Data в Windows XP или C: \ Пользователи \ \ AppData \ Roaming в Windows Vista) могут использовать аналогичный код:

Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%")

''# or

Const ssfAPPDATA = &H1A
Set oShell = CreateObject("Shell.Application")
strHomeFolder = oShell.NameSpace(ssfAPPDATA).Self.Path


Чтобы добавить имя папки к пути, вы можете просто использовать конкатенацию строк следующим образом:

strMedMaintFolder = strHomeFolder & "\MedMaint"

В случае, если ваш скрипт содержит много конкатенаций путей, я предлагаю использовать метод FileSystemObject.BuildPath, поскольку он позаботится о разделителях путей (\) для вас:

Set oFSO = CreateObject("Scripting.FileSystemObject")
strMedMaintFolder = fso.BuildPath(strHomeFolder, "MedMaint") 
2 голосов
/ 05 октября 2010

Вы можете использовать объект Shell.

Посмотрите на эту ссылку.

1 голос
/ 05 октября 2010

Вот один из способов сделать это, если вы используете Windows Scripting Host.

Set WshShell = CreateObject("WScript.Shell")
strHomeFolder = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...