Проверьте, есть ли папка, если нет, создайте ее для текущего пользователя, вошедшего в VBS

На данный момент это мой сценарий

Set oWS = WScript.CreateObject("WScript.Shell")
' Get the %userprofile% in a variable, or else it won't be recognized
userProfile = oWS.ExpandEnvironmentStrings( "%userprofile%" )

То, что я пытаюсь сделать, это захватить текущего пользователя, вошедшего в систему, я хочу, чтобы он проверил каталог D:\"personsuser"\Appdata\Roaming\Local, чтобы увидеть, создана ли папка "Local", если она не создана Я хочу создать один с помощью createobject в VBS. Приведенный выше скрипт из того, что я знаю, захватывает текущего вошедшего в систему пользователя, однако я не уверен, как использовать эту переменную для создания папки.

Я знаю, что мне придется включить что-то вроде этого:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("C:\FSO")

И или что-то в этом роде:

Dim objNetwork
Dim userName
Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")

Set objNetwork = CreateObject("WScript.Network")
userName = objNetwork.userName

If fso.driveExists("D:\" & userName & "\AppData\Local\") Then
    FSO.CreateDirectory ("D:\" & userName & "\AppData\Local\")
End If

Заранее спасибо, не очень знаком с VBS, однако это единственная платформа, с которой я могу работать в среде, в которой я ее использую.

3 ответа

Set oWS = WScript.CreateObject("WScript.Shell")
' Get the %userprofile% in a variable, or else it won't be recognized
userProfile = oWS.ExpandEnvironmentStrings( "%userprofile%" )

Dim objNetwork
Dim userName
Dim FSO
Dim Folder

Set FSO = CreateObject("Scripting.FileSystemObject")

Set objNetwork = CreateObject("WScript.Network")
userName = objNetwork.userName

If NOT (FSO.FolderExists(userProfile + "\AppData\Roaming\Local")) Then
    ' Delete this if you don't want the MsgBox to show
    MsgBox("Local folder doesn't exists, creating...")
    splitString = Split(userProfile, "\")

    ' Create folder
    MsgBox("D:\" + splitString(2) + "\AppData\Roaming\Local")
    'FSO.CreateFolder(splitString(2) + "\AppData\Roaming\Local")
End If

Вот, пожалуйста, чувак, все должно работать идеально, уважаемый Даниэль.

Вот часть кода из моей утилиты для FSO:

dim ffso

Function GetFSO
    if not IsValidObject(ffso) then set ffso = CreateObject("Scripting.FileSystemObject")
  Set GetFSO = ffso
End Function

sub SureDirectoryExists(ADir)
    if ADir="" then exit sub
    if not GetFSO().FolderExists(ADir) then
        SureDirectoryExists ffso.GetParentFolderName(ADir)
        ffso.CreateFolder ADir
    end if
end sub

Эта функция создаст все папки в параметре пути (строка).

      Public Function CheckCreateFolder(path)
    Dim TempPath As String
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    pos = 0
     While pos < Len(path)
        pos = InStr(pos + 1, path, "\")
        TempPath = Left(path, pos)
        If Not (FSO.FolderExists(TempPath)) Then
        FSO.CreateFolder (TempPath)
        End If
     Wend
    
End Function
Другие вопросы по тегам