Sean M Posted June 20, 2006 Share Posted June 20, 2006 (edited) Hello I am trying to automate the process of making a virtual directory under another virtual directory. Currently my code only makes the first virtual directory. I want to be able to go inside that folder and select another folder and make that one a virtual directory also. Is there a way for me to read the folder names and select them and then find a folder when im inside the directory. My current code is as follows. expandcollapse popup; The #include function brings in other AutoIt v3 projects. #include <GUIConstants.au3> ; Lines 16 - 23 are setting up the GUI. $Form1 = GUICreate("XLCapital Virtual Directory Creator", 370, 173, 192, 125) $InputAlias = GUICtrlCreateInput("",32, 27, 169, 21) $InputFolder = GUICtrlCreateInput("", 32, 80, 250, 21) $BtnBrowse = GUICtrlCreateButton("Browse", 300, 80, 57, 25, 0) $BtnNext = GUICtrlCreateButton("Next", 50,110) $BtnClear = GUICtrlCreateButton("Clear", 100,110) $BtnExit = GUICtrlCreateButton("Exit", 150, 110) GUICtrlCreateLabel ("Please click browse to find the Directory you want", 32, 59 ) GUICtrlCreateLabel ("Please enter an Alias name", 32, 6) ; GUISetState makes the form show on the screen GUISetState(@SW_SHOW) ; the GUICtrlSetState function disables the $InputFolder so the user can not manually enter data in the input box. GUICtrlSetState ($InputFolder, $GUI_DISABLE) While 1 ; $msg is used to react with what actions are happening on the GUI. $msg = GuiGetMsg() Select ; Line 36 is the "X" button coding. Case $msg = $GUI_EVENT_CLOSE ExitLoop ; Lines 40 - 42 are code for the browse button. ; You are able to open up the select folder window and send the selected folder to the input box. Case $msg = $BtnBrowse $select = FileSelectFolder( "Select File","c:\") ControlSetText( "", "", $InputFolder, $select) ; Lines 44 - 47 are code for the clear button. We are clearing the text and then setting the focus for the Alias input. Case $msg = $BtnClear ControlSetText("","",$InputAlias,"") ControlSetText("","",$InputFolder,"") Controlfocus ("","",$InputAlias) ; Line 49 and 50 are the code for the Exit button. Case $msg = $BtnExit Exit ; The following lines are tied into the Next button. Case $msg = $BtnNext ; Lines 55 - 58 read the input boxes and then checks to see if there is a null value in them. ; Then lines 59 - 64 gives errors if there is a null value in the input box. $ReadAlias = GUICtrlRead($InputAlias) $NullCheckAlias = StringReplace($ReadAlias, "|", @CRLF) $ReadFolder = GUICtrlRead($InputFolder) $NullCheckFolder = Stringreplace($ReadFolder, "|",@CRLF) If $NullCheckAlias = "" Then msgbox(16,"Error","Please Enter in an Alias") Controlfocus ("","",$InputAlias) ElseIf $NullCheckFolder = "" Then msgbox(16,"Error","Please Select a Directory") Controlfocus ("","",$InputFolder) ; Lines 67 - 95 are part of the step through of the IIS. I have blocked the input from the keyboard and mouse during this ; time because the input of either one could crash the script. Else BlockInput (1) Send("#r") WinWaitActive("Run") Send("inetmgr") Send("{ENTER}") WinWaitActive("Internet Information Services") Send("{Right}") Send("{Right}") Send("{Right}") Send("{Right}") Send("{Right}") Send("!a") Send("n") Send("v") Winwaitactive("Virtual Directory Creation Wizard","Welcome to the Virtual Directory Creation Wizard") Send("!n") WinWaitActive("Virtual Directory Creation Wizard","Virtual Directory Alias") $alias = GUICtrlRead($InputAlias) Send($alias) Send("!n") WinWaitActive("Virtual Directory Creation Wizard","Web Site Content Directory") Send($select) Send("!n") WinWaitActive("Virtual Directory Creation Wizard","Access Permissions") Send("!n") WinWaitActive("Virtual Directory Creation Wizard","You have successfully completed the Virtual Directory Creation Wizard.") Send("{ENTER}") BlockInput (0) EndIf EndSelect WEnd Edited June 20, 2006 by Sean M Link to comment Share on other sites More sharing options...
Sean M Posted June 21, 2006 Author Share Posted June 21, 2006 Any takers? please help! Link to comment Share on other sites More sharing options...
Janus Posted January 9, 2008 Share Posted January 9, 2008 Hi You can use this code to create a website. (It is not my code!) CODE'--------------------------------------------------------------------------------------------------- ' This function creates a virtual web directory on the specified web site ' and with the specified path ' 'mkwebdir [--computer|-c COMPUTER1, COMPUTER2, COMPUTER3] ' <--website|-w WEBSITE> ' <--virtualdir|-v NAME1,PATH1,NAME2,PATH2,...> ' [--help|-?] ' 'COMPUTER Computer on which users exists 'WEBSITE1,WEBSITE2 Virtual Web Sites on which directories will be created 'NAME1,PATH1,NAME2,PATH2 Virtual Directories names and paths to create ' 'Example 1 mkwebdir -c LocalHost -w "Default Web Site" ' -v "Virtual Dir1","c:\inetpub\wwwroot\dir1","Virtual Dir2","c:\inetpub\wwwroot\dir2" 'Example 2 mkwebdir -c LocalHost -w 3 ' -v "Virtual Dir1,c:\inetpub\wwwroot\dir1,Virtual Dir2,c:\inetpub\wwwroot\dir2" '--------------------------------------------------------------------------------------------------- ' Force explicit declaration of all variables. Option Explicit On Error Resume Next Dim oArgs, ArgNum Dim ArgComputer, ArgWebSites, ArgVirtualDirs, ArgDirNames(), ArgDirPaths(), DirIndex Dim ArgComputers Set oArgs = WScript.Arguments ArgComputers = Array("LocalHost") ArgNum = 0 While ArgNum < oArgs.Count If (ArgNum + 1) >= oArgs.Count Then Call DisplayUsage End If Select Case LCase(oArgs(ArgNum)) Case "--computer","-c": ArgNum = ArgNum + 1 ArgComputers = Split(oArgs(ArgNum), ",", -1) Case "--website","-w": ArgNum = ArgNum + 1 ArgWebSites = oArgs(ArgNum) Case "--virtualdir","-v": ArgNum = ArgNum + 1 ArgVirtualDirs = Split(oArgs(ArgNum), ",", -1) Case "--help","-?" Call DisplayUsage End Select ArgNum = ArgNum + 1 Wend ArgNum = 0 DirIndex = 0 ReDim ArgDirNames((UBound(ArgVirtualDirs)+1) \ 2) ReDim ArgDirPaths((UBound(ArgVirtualDirs)+1) \ 2) if isArray(ArgVirtualDirs) then While ArgNum <= UBound(ArgVirtualDirs) ArgDirNames(DirIndex) = ArgVirtualDirs(ArgNum) If (ArgNum + 1) > UBound(ArgVirtualDirs) Then WScript.Echo "Error understanding virtual directories" Call DisplayUsage End If ArgNum = ArgNum + 1 ArgDirPaths(DirIndex) = ArgVirtualDirs(ArgNum) ArgNum = ArgNum + 1 DirIndex = DirIndex + 1 Wend end if If (ArgWebSites = "") Or (IsArray(ArgDirNames) = False or IsArray(ArgDirPaths) = False) Then Call DisplayUsage Else Dim compIndex for compIndex = 0 to UBound(ArgComputers) Call ASTCreateVirtualWebDir(ArgComputers(compIndex),ArgWebSites,ArgDirNames,ArgDirPaths) next End If '--------------------------------------------------------------------------------- Sub Display(Msg) WScript.Echo Now & ". Error Code: " & Hex(Err) & " - " & Msg End Sub Sub Trace(Msg) WScript.Echo Now & " : " & Msg End Sub Sub DisplayUsage() WScript.Echo "Usage: mkwebdir [--computer|-c COMPUTER1,COMPUTER2]" WScript.Echo " <--website|-w WEBSITE1>" WScript.Echo " <--virtualdir|-v NAME1,PATH1,NAME2,PATH2,...>" WScript.Echo " [--help|-?]" WScript.Echo "" WScript.Echo "Note, WEBSITE is the Web Site on which the directory will be created." WScript.Echo "The name can be specified as one of the following, in the priority specified:" WScript.Echo " Server Number (i.e. 1, 2, 10, etc.)" WScript.Echo " Server Description (i.e ""My Server"")" WScript.Echo " Server Host name (i.e. ""www.domain.com"")" WScript.Echo " IP Address (i.e., 127.0.0.1)" WScript.Echo "" WScript.Echo "" WScript.Echo "Example : mkwebdir -c LocalHost -w ""Default Web Site""" WScript.Echo " -v ""dir1"",""c:\inetpub\wwwroot\dir1"",""dir2"",""c:\inetpub\wwwroot\dir2""" WScript.Echo WScript.Echo " mkwebdir -c LocalHost -w 3" WScript.Echo " -v ""dir1,c:\inetpub\wwwroot\dir1,dir2,c:\inetpub\wwwroot\dir2""" WScript.Quit End Sub '--------------------------------------------------------------------------------- Sub ASTCreateVirtualWebDir(ComputerName,WebSiteName,DirNames,DirPaths) Dim Computer, webSite, WebSiteID, vRoot, vDir, DirNum On Error Resume Next set webSite = findWeb(ComputerName, WebSiteName) if IsObject(webSite) then set vRoot = webSite.GetObject("IIsWebVirtualDir", "Root") Trace "Accessing root for " & webSite.ADsPath If (Err <> 0) Then Display "Unable to access root for " & webSite.ADsPath Else DirNum = 0 If (IsArray(DirNames) = True) And (IsArray(DirPaths) = True) And (UBound(DirNames) = UBound(DirPaths)) Then While DirNum < UBound(DirNames) 'Create the new virtual directory Set vDir = vRoot.Create("IIsWebVirtualDir",DirNames(DirNum)) If (Err <> 0) Then Display "Unable to create " & vRoot.ADsPath & "/" & DirNames(DirNum) &"." Else 'Set the new virtual directory path vDir.AccessRead = true vDir.Path = DirPaths(DirNum) If (Err <> 0) Then Display "Unable to bind path " & DirPaths(DirNum) & " to " & vRootName & "/" & DirNames(DirNum) & ". Path may be invalid." Else 'Save the changes vDir.SetInfo If (Err <> 0) Then Display "Unable to save configuration for " & vRootName & "/" & DirNames(DirNum) &"." Else Trace "Web virtual directory " & vRootName & "/" & DirNames(DirNum) & " created successfully." End If End If End If Err = 0 DirNum = DirNum + 1 Wend End If End If else Display "Unable to find "& WebSiteName &" on "& ComputerName End if Trace "Done." End Sub function getBinding(bindstr) Dim one, two, ia, ip, hn one=Instr(bindstr,":") two=Instr((one+1),bindstr,":") ia=Mid(bindstr,1,(one-1)) ip=Mid(bindstr,(one+1),((two-one)-1)) hn=Mid(bindstr,(two+1)) getBinding=Array(ia,ip,hn) end function Function findWeb(computer, webname) On Error Resume Next Dim websvc, site dim webinfo Dim aBinding, binding set websvc = GetObject("IIS://"&computer&"/W3svc") if (Err <> 0) then exit function end if ' First try to open the webname. set site = websvc.GetObject("IIsWebServer", webname) if (Err = 0) and (not isNull(site)) then if (site.class = "IIsWebServer") then ' Here we found a site that is a web server. set findWeb = site exit function end if end if err.clear for each site in websvc if site.class = "IIsWebServer" then ' ' First, check to see if the ServerComment ' matches ' If site.ServerComment = webname Then set findWeb = site exit function End If aBinding=site.ServerBindings if (IsArray(aBinding)) then if aBinding(0) = "" then binding = Null else binding = getBinding(aBinding(0)) end if else if aBinding = "" then binding = Null else binding = getBinding(aBinding) end if end if if IsArray(binding) then if (binding(2) = webname) or (binding(0) = webname) then set findWeb = site exit function End If end if end if next End Function Janus S. Andersen P.s. The best way is to translate it to Autoit3 Link to comment Share on other sites More sharing options...
Colin Posted July 9, 2008 Share Posted July 9, 2008 look into IISFTPDR it's a console command... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now