1

好的,这就是我想要做的。我的脚本也将一个文件夹复制到计算机上的 appdata 文件夹,但这就是我需要它做的事情。我需要它来检查该名称的文件夹是否已经存在,如果确实将其重命名为其他名称,那么在此处复制该文件夹是我需要修改的当前脚本以检查该文件夹是否存在。提前谢谢

Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%")


Set oShell = CreateObject("WScript.Shell")
Set ofso = CreateObject("Scripting.FileSystemObject")
oShell.CurrentDirectory = oFSO.GetParentFolderName(Wscript.ScriptFullName)

DestinationFolder = strHomeFolder & "\vlc"
SourceFolder = oShell.CurrentDirectory & "\vlc"

dim filesys 
set filesys=CreateObject("Scripting.FileSystemObject") 
If filesys.FolderExists(SourceFolder ) Then 
filesys.CopyFolder SourceFolder , DestinationFolder 
End If
4

1 回答 1

4

您检测目标文件夹是否存在的方式与检测源文件夹是否存在相同:

If filesys.FolderExists(DestinationFolder) Then
  'do stuff
End If

可以像这样重命名文件夹,例如:

filesys.GetFolder(DestinationFolder).Name = "othername"

无需更改您正在执行的操作的工作目录,顺便说一句,也无需两次实例化 Shell 和 FileSystemObject 对象。

不过,您应该更改构建源路径和目标路径的方式。摆弄路径分隔符很容易出错。最好使用BuildPath构建路径的方法:

DestinationFolder = oFSO.BuildPath(oShell.ExpandEnvironmentStrings("%APPDATA%"), "vlc")
SourceFolder = oFSO.BuildPath(oFSO.GetParentFolderName(WScript.ScriptFullName), "vlc")

这样,您的脚本可能看起来像这样:

Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

dst = fso.BuildPath(sh.ExpandEnvironmentStrings("%APPDATA%"), "vlc")
src = fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName), "vlc")

If fso.FolderExists(src) Then
  If fso.FolderExists(dst) Then fso.GetFolder(dst).Name = "othername"
  fso.CopyFolder src, dst
End If
于 2013-08-12T21:04:46.880 回答