首页 > 解决方案 > 有没有办法使用 vbs 将驱动器的每个文件和文件夹移动到驱动器本身的文件夹中

问题描述

我需要一个 VBS 中的程序(我也可以使用批处理,但 VBS 会更好),它将我的 USB 驱动器的所有文件和文件夹移动到 USB 中的一个文件夹中。例如:如果在我的 USB 驱动器中有这些目录:

E:\folder1\file.txt
E:\folder2\foder3\file3.txt
E:\file.txt

运行程序后会有以下路径:

E:\newfolder\folder1\file.txt
E:\newfolder\folder2\foder3\file3.txt
E:\newfolder\file.txt

我不知道这是否可能。我已经使用 for 循环制作了一个程序,但它仅适用于文件而不适用于文件夹:

Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubfolders FSO.GetFolder("E:/")

Sub ShowSubFolders(Folder)
set fs = CreateObject("Scripting.FileSystemObject")
For Each Subfolder in Folder.SubFolders
fs.movefolder Subfolder.Path , "E:\newfolder\"
next
End Sub
With CreateObject("Scripting.FileSystemObject")
    .MoveFile "E:\*.*", "E:\newfolder\"
End With

*在此代码中,新文件夹已经存在。

标签: vbscript

解决方案


您可以使用Folder对象的Move方法:

Dim sSourcePath
Dim sDestinationPath
Dim objFSO
Dim objSourceFolder
Dim objDestinationFolder
Dim objFolder

' Define paths
sSourcePath = "E:\"
sDestinationPath = "E:\newfolder\"

' Get source and destination folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFolder = objFSO.GetFolder(sSourcePath)
Set objDestinationFolder = objFSO.GetFolder(sDestinationPath)

For Each objFolder In objSourceFolder.Subfolders
    If objFolder Is objDestinationFolder Then
        ' Don't move destination folder
    Else
        ' Move folder to destination folder
        objFolder.Move sDestinationPath
    End If
Next

推荐阅读