将文件从特殊文件夹移动到另一个特殊文件夹

时间:2016-03-25 21:10:54

标签: windows powershell vbscript special-folders

我正在编写一个脚本,将Outlook签名移动到%APPDATA%\Microsoft\Signatures\,但它没有按计划进行。

我想指示用户将“signature”文件夹放在桌面上,然后运行一个脚本,将签名文件夹中的所有项目移动到AppData文件夹。

我一直在阅读,看起来并不像将%userprofile%\Desktop\signatures\*放入VBScript或PowerShell代码那么简单。我不明白为什么Windows资源管理器知道如何处理该路径,但PowerShell / VBScript不知道特殊文件夹是什么,但无论如何,我的代码都无效。

以下是我正在尝试使用VBScript的示例:

Dim desktop
Dim appdata
desktop = object.SpecialFolders("Desktop")
appdata = object.SpecialFolders("APPDATA") 

With CreateObject("Scripting.FileSystemObject")
    .MoveFile desktop\MET_Signature_Template\*, appdata\Microsoft\Signatures\test\
End With

我收到语法错误,但没有指出为什么错误。我尝试了一些我在这里找到的不同的东西,但没有用。

1 个答案:

答案 0 :(得分:1)

如有疑问,请阅读documentation

  

语法

     

object.SpecialFolders(objWshSpecialFolders)

     

参数

     

物体
   WshShell 对象。

改变这个:

desktop = object.SpecialFolders("Desktop")
appdata = object.SpecialFolders("APPDATA")

进入这个:

Set sh  = CreateObject("WScript.Shell")
desktop = sh.SpecialFolders("Desktop")
appdata = sh.SpecialFolders("APPDATA")

使用BuildPath方法构建源路径和目标路径:

Set fso = CreateObject("Scripting.FileSystemObject")
source      = fso.BuildPath(desktop, "MET_Signature_Template")
destination = fso.BuildPath(appdata, "Microsoft\Signatures\test")
fso.MoveFile source & "\*", destination & "\"

在PowerShell中你可以这样做:

$source      = "$env:APPDATA\MET_Signature_Template"
$destination = Join-Path [Environment]::GetFolderPath('Desktop') 'Microsoft\Signatures\test'
Copy-Item "$source\*" $destination