web-dev-qa-db-fra.com

Vérifier si le dossier est là, sinon le créer sur l'utilisateur actuel connecté à VBS

Actuellement c'est mon script

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

Ce que j'essaie de faire est de saisir l'utilisateur actuel connecté, je veux qu'il vérifie le répertoire D:\"personnesuser"\Appdata\Roaming\Local pour voir si le dossier "Local" est créé, s'il n'est pas créé Je veux en créer un via createobject en vbs. Le script ci-dessus, issu de ce que je sais, saisit l'utilisateur actuellement connecté, mais je ne sais pas comment utiliser cette variable pour créer un dossier.

Je sais que je devrai incorporer quelque chose dans ce sens:

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

Et ou quelque chose du genre:

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

Merci d’avance, je ne connais pas très bien VBS, c’est la seule plate-forme que je peux utiliser dans l’environnement où je l’utilise.

13
user2281912
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

Allez, mec, ça devrait marcher parfaitement, estime Daniel.

19
Daniel Holman

Voici la partie de code de mon utilitaire pour 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
1
Artem Popov