vbscript directory

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