Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBScript从冗余备份文件夹中删除非';t位于主备份文件夹中_Vbscript_Synchronization_Backup_Directory - Fatal编程技术网

VBScript从冗余备份文件夹中删除非';t位于主备份文件夹中

VBScript从冗余备份文件夹中删除非';t位于主备份文件夹中,vbscript,synchronization,backup,directory,Vbscript,Synchronization,Backup,Directory,好的,我对VBScript还不太熟悉,所以对我放松点 我正在尝试构建一个VBScript,该脚本将删除主备份文件夹中不再存在的冗余备份文件夹中的文件。我设想这样做,即获取冗余文件夹中的每个文件,并检查主备份文件夹中是否存在同名文件。如果没有,则删除冗余文件夹中的文件。这似乎很容易,但我认为我缺乏VB知识阻碍了我前进 编辑:这将在Server2003上运行 以下是我目前掌握的情况: 'variables dim fso1 dim fso2 dim redundantFolder dim prima

好的,我对VBScript还不太熟悉,所以对我放松点

我正在尝试构建一个VBScript,该脚本将删除主备份文件夹中不再存在的冗余备份文件夹中的文件。我设想这样做,即获取冗余文件夹中的每个文件,并检查主备份文件夹中是否存在同名文件。如果没有,则删除冗余文件夹中的文件。这似乎很容易,但我认为我缺乏VB知识阻碍了我前进

编辑:这将在Server2003上运行

以下是我目前掌握的情况:

'variables
dim fso1
dim fso2
dim redundantFolder
dim primaryFolder
dim redundantFile
dim primaryFile
dim counter

'creates file system object
Set fso1 = CreateObject("Scripting.FileSystemObject")
set fso2 = CreateObject("Scripting.FileSystemObject")

'sets the folder object to redundant backup folder
Set redundantFolder = fso1.GetFolder("C:\Users\bmcwilliams\Desktop\Dev\TestCompleted")

'sets folder object to primary folder
Set primaryFolder = fso2.getFolder("C:\Users\bmcwilliams\Desktop\Dev\TestUnCompleted")

'deletes files that aren't found in primary folder
For Each redundantFile in redundantFolder
    For Each primaryFile in primaryFolder
        if primaryFile.name == redundantFile.name
            flag = false
            Next
我知道“For Each”代码块中的逻辑是不完整的,完全是错误的,但这是我小小的大脑所允许的

提前谢谢。非常感谢您的帮助

编辑:这是最后的代码。我希望这将对其他初学者有所帮助:

'creates file system object
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set fso2 = CreateObject("Scripting.FileSystemObject")

'sets the folder object to redundant backup folder
Set redundantFolder = fso1.GetFolder("C:\temp\redundant")

'sets folder object to primary folder
Set primaryFolder = fso2.GetFolder("C:\temp\primary")

'deletes files that aren't found in primary folder
For Each redundantFile In redundantFolder.Files
    If Not fso1.FileExists(primaryFolder.Path + "\" + redundantFile.Name) Then
       redundantFile.Delete
    End If
Next

带有/nocopy/purge的windows内置robocopy实用程序将在Server 2003上运行。robocopy是否兼容或可供下载;在VBScript中,比较是用
=
完成的,而不是
=
。此外,每个
循环的
会在某个集合上迭代。从
GetFolder
返回的
Folder
对象不是集合;您需要迭代由
文件夹
文件
属性返回的集合。如果不存在fso.FileExists…
,则条件应为
。此外,您可以使用
fso.BuildPath
方法组合目录和文件名。谢谢您的回答,Paul。我刚刚尝试了一下,在redundantFolder.Files上出现了“Object不支持此属性或方法”错误,
Files
是否需要括号?这是一种财产,不是一种方法。谢谢你的帮助,保罗和泽夫。我想它现在起作用了,而我的小脑袋只是稍微大了一点。
'creates file system object
Set fso = CreateObject("Scripting.FileSystemObject")

'sets the folder object to redundant backup folder
Set redundantFolder = fso.GetFolder("C:\temp\redundant")

'sets folder object to primary folder
Set primaryFolder = fso.GetFolder("C:\temp\primary")

'deletes files that aren't found in primary folder
For Each redundantFile In redundantFolder.Files
    If Not fso.FileExists(fso.BuildPath(primaryFolder.Path,redundantFile.Name)) Then
       redundantFile.Delete
    End If
Next