如何在%AppData%中创建文件夹和子文件夹

时间:2013-12-30 05:28:38

标签: vbscript user-profile appdata

首先,非常感谢你在过去的六个月里为我节省生命的3个Vbscript找到的所有帮助。 我是Vbscripting的新手,我正在努力获取一个创建文件夹和复制文件的Vbscript同时覆盖该文件夹和文件(如果它们已经存在) 要创建的文件夹和子文件夹(Avaya)C:\ Users \ My Username \ AppData \ Roaming \ Avaya \ Avaya \ one-X Agent \ 2.5 \ 文件从(Myfile.txt)C:\ Myfile.txt到C:\ Users \ My Username \ AppData \ Roaming \ Avaya \ one-X Agent \ 2.5 \

我收到“未找到路径”错误,但是如果我离开路径直到(Avaya)它会创建Avaya文件夹而不是它的子文件夹C:\ Users \ My Username \ AppData \ Roaming \ Avaya \

这是我拥有的,并提前感谢你

Dim fso, vFolder
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
set objWShell = wScript.createObject("WScript.Shell")
usrName = objWShell.expandEnvironmentStrings("%USERNAME%")
Set fso = CreateObject("Scripting.FileSystemObject")
Set vFolder = fso.CreateFolder("C:\Users\" & usrName & "\AppData\Roaming\Avaya\one-X Agent\2.5\")
CreateFolderDemo = vFolder.Path

2 个答案:

答案 0 :(得分:6)

问题是CreateFolder不会创建中间文件夹。 FSO没有这样做的方法。这样使用mkdir可能更容易:

Option Explicit

Dim shl
Set shl = CreateObject("WScript.Shell")
Call shl.Run("%COMSPEC% /c mkdir ""%APPDATA%\Avaya\one-X Agent\2.5""",0,true)

答案 1 :(得分:3)

一些错误:

  1. 您声明fso,但使用objFso
  2. 您使用的是%USERNAME%,但您应该考虑使用%APPDATA%
  3. 您应该使用OPTION EXPLICIT来检测拼写错误和未定义的变量
  4. 您应该通过一次调暗一个变量来使代码更容易阅读
  5. CreateFolder不会创建整个树,因此您需要使用FolderExists
  6. 例如:

    Option Explicit
    Dim objWShell
    Set objWShell = WScript.CreateObject("WScript.Shell")
    Dim appData
    appData = objWShell.expandEnvironmentStrings("%APPDATA%")
    Dim objFso
    Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
    If Not objFso.FolderExists(appData + "\Avaya") Then
      objFso.CreateFolder appData + "\Avaya"
    End If
    If Not objFso.FolderExists(appData + "\Avaya\one-X Agent") Then
      objFso.CreateFolder appData + "\Avaya\one-X Agent"
    End If
    If Not objFso.FolderExists(appData + "\Avaya\one-X Agent\2.5") Then
      objFso.CreateFolder appData + "\Avaya\one-X Agent\2.5"
    End If
    

    最后,还不清楚为什么你的解决方案需要在VBScript中。您的要求似乎是创建文件夹和复制文件,这意味着批处理文件可能会更简单。