obtener el directorio actual en vbscript
directory (6)
Estoy intentando obtener el directorio actual y usarlo para ejecutar una aplicación sin importar dónde se coloque el archivo y cómo se cambie la ruta
dim fso: set fso = CreateObject("Scripting.FileSystemObject")
dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")
dim Directory
Directory = CurrentDirectory/attribute.exe
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "Directory" & Chr(34), 0
Set WinScriptHost = Nothing
¿Cómo configuro este código para que haga lo que quiero que haga correctamente? ¡Gracias por adelantado!
Puede usar WScript.ScriptFullName que devolverá la ruta completa del script de ejecución .
Luego puede usar la manipulación de cadenas ( ejemplo de jscript ):
scriptdir = WScript.ScriptFullName.substring(0,WScript.ScriptFullName.lastIndexOf(WScript.ScriptName)-1)
O obtenga ayuda de FileSystemObject, ( ejemplo de vbscript ):
scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
Puede utilizar la propiedad CurrentDirectory .
Dim WshShell, strCurDir
Set WshShell = CreateObject("WScript.Shell")
strCurDir = WshShell.CurrentDirectory
WshShell.Run strCurDir & "/attribute.exe", 0
Set WshShell = Nothing
Su problema no es obtener el directorio ( fso.GetAbsolutePathName(".")
Resuelve el directorio de trabajo actual sin problemas). Incluso si quisiera el directorio de secuencias de comandos en lugar del directorio de trabajo actual, podría determinarlo fácilmente como lo describió Jakob Sternberg en su respuesta .
Lo que no funciona en su código es construir una ruta desde el directorio y su ejecutable. Esta es una sintaxis no válida:
Directory =
CurrentDirectory/attribute.exe
Si desea crear una ruta a partir de una variable y un nombre de archivo, el nombre del archivo debe especificarse como una cadena (o una variable que contiene una cadena) y concatenar con la variable de directorio de variables:
Directory = CurrentDirectory & "/attribute.exe"
o (mejor) construyes la ruta usando el método BuildPath :
Directory = fso.BuildPath(CurrentDirectory, "attribute.exe")
Tu linea
Directory = CurrentDirectory/attribute.exe
no coincide con ninguna característica que he encontrado en un manual de instrucciones vbscript. Lo siguiente funciona para mí, aunque no estoy seguro de qué / dónde espera que "attribute.exe" resida.
dim fso
dim curDir
dim WinScriptHost
set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")
set fso = nothing
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run curDir & "/testme.bat", 1
set WinScriptHost = nothing
sencillo:
scriptdir = replace(WScript.ScriptFullName,WScript.ScriptName,"")
''-----Implementation of VB6 App object in VBScript-----
Class clsApplication
Property Get Path()
Dim sTmp
If IsObject(Server) Then
''Classic ASP
Path = Server.MapPath("../")
ElseIf IsObject(WScript) Then
''Windows Scripting Host
Path = Left(WScript.ScriptFullName, InStr(WScript.ScriptFullName, WScript.ScriptName) - 2)
ElseIf IsObject(window) Then
''Internet Explorer HTML Application (HTA)
sTmp = Replace( Replace(Unescape(window.location), "file:///", "") ,"/", "/")
Path = Left(sTmp, InstrRev( sTmp , "/") - 1)
End If
End Property
End Class
Dim App : Set App = New clsApplication ''use as App.Path