I'm trying to write a script that will promt a browse windows and will return the full path (with space) of a file so I can use it in my script to compare another file. Cant get the script to work because there is some spaces in the path name.
'-- Hwnd is always 0. Title is browse window caption. RootFolder is optional top folder to show.
'-- Options has several possibilities:
'-- 1 - only allows selection of system folders. (doesn't seem to work.)
'-- 2 - don't show network folders below domain level. (doesn't work on stand-alone system.)
'-- 8 - only allow selection of File System ancestors(??) (on stand-alone system nothing can be selected.)
'-- 16 - adds a text input but only valid entries will be returned; cannot create a folder.
'-- 4096 - only computers can be selected.
'-- 8192 - only a printer can be selected.
'-- 16384 - full browsing, includes files.
'-- This script uses the FolderItems object properties to Get path and
'-- find out what type of item it is.


Dim ShellApp, Ret, s, i
Set ShellApp = CreateObject("Shell.Application")

On Error Resume Next
Set Ret = ShellApp.BrowseForFolder(0, "Choose file.", 16384)
s = Ret.title
If Err.number <> 0 Then
End If

s = GetPath(Ret, i)
MsgBox s & "-" & cstr(i) '--show full path and type of item returned. 0-namespace. 1-drive. 2-folder. 3-file.
Set ShellApp = nothing

Function GetPath(Fil, iItem)
Dim Pt1, fPar, sn, Obj, sType
On Error Resume Next
sn = Fil.title
Set fPar = Fil.parentfolder

Set Obj = fPar.parsename(sn) '--return item selected as a Shell FolderItem.

'--weed out namespaces and drives. If it's a namespace or drive it can't
'--return a FolderItem so the last Call caused an error and Obj is therefore
'--Not part of the filesystem:

If Obj.isfilesystem = false Then
Pt1 = instr(sn, ":")
If Pt1 = 0 Then
iItem = 0 '--namespace.
getpath = sn
iItem = 1 '--drive.
getpath = mid(sn, (Pt1 - 1), 2) & "\" '--Get letter before : and add "\" If drive.
End If
Set Obj = nothing
exit Function
End If

'--it's a file or folder. find out which and Get path:
sType = Obj.type '--Get object Type as shown in folder Details view.
'-- Should be able to use: If Obj.IsFolder = True..... but it doesn't work.

If instr(sType, "Folder") = 0 Then '--in detail view a folder will be type "File Folder".
iItem = 3 '--file.
iItem = 2 '--folder.
End If

getpath = Obj.path
Set Obj = Nothing
End Function