【问题标题】:VBScript current directory + sub directory?VBScript当前目录+子目录?
【发布时间】:2011-04-27 17:35:59
【问题描述】:

我正在尝试获取位于 VBScript 中当前目录的子目录中的文件的路径。以下似乎不起作用?

currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))
FileToCopy = currentDirectory & "\test\user.js"

这是完整的代码:

Set oFSO = CreateObject("Scripting.FileSystemObject")
strFolder = oFSO.GetParentFolderName(WScript.ScriptFullName)
FileToCopy = oFSO.BuildPath(strFolder, "unproxy\user.js")

''# get AppdataPath
Set WshShell = CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("PROCESS")

AppdataPath = WshSysEnv("APPDATA") 

FoxProfilePath = AppdataPath & "\Mozilla\Firefox\Profiles\"

'"# is firefox and user.js present?
if oFSO.FolderExists(FoxProfilePath) AND oFSO.FileExists(FileToCopy) Then

''# copy user.js in all profilefolders to get around those random profile names =)
    For Each ProfileFolder In oFSO.GetFolder(FoxProfilePath).Subfolders
        oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\" & FileToCopy, True
    Next
End If

'"# clean up
Set oFSO = Nothing
Set WshShell = Nothing
Set WshSysEnv = Nothing

【问题讨论】:

  • 您能否详细说明“似乎不起作用”的含义?您收到错误或不正确的结果吗? VBScript 脚本的文件名是什么?
  • 我没有收到错误,似乎什么也没发生 - 文件没有复制,因为我猜它无法找到 user.js 文件。
  • 文件名为copyFile.vbs
  • 发布您正在使用的整个代码。
  • 已发布完整代码。

标签: windows scripting file vbscript working-directory


【解决方案1】:

我建议在处理文件路径时使用FileSystemObject

Set oFSO = CreateObject("Scripting.FileSystemObject")
strFolder = oFSO.GetParentFolderName(WScript.ScriptFullName)
FileToCopy = oFSO.BuildPath(strFolder, "test\user.js")

编辑:问题出在脚本的这一行:

oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\" & FileToCopy, True

由于FileToCopy 包含完整的文件名,当您将其与ProfileFolder 连接时,您会得到一个无效的文件名,如下所示:

C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\mlreq6kv.default\D:\unproxy\user.js

将此行更改为下面的行,您的脚本应该可以正常工作。 (注意:ProfileFolder 末尾的尾随路径分隔符用于指示配置文件文件夹,例如 mlreq6kv.default,确实是文件夹而不是文件。)

oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\", True

【讨论】:

    【解决方案2】:

    您可以通过以下方式获取当前目录:

    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WScript.Echo WshShell.CurrentDirectory
    

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 2010-09-19
      • 1970-01-01
      • 2017-01-07
      • 2016-01-03
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多