【问题标题】:From list of directories, copy all subfolders to new location each with own folder per directory从目录列表中,将所有子文件夹复制到新位置,每个目录都有自己的文件夹
【发布时间】:2017-08-04 14:14:20
【问题描述】:
我已经四处搜索,似乎无法自己找到解决方案,所以我正在寻求帮助!
我有一个大约 100 个文件位置/目录的列表。它们位于网络上,我需要将它们全部抓取并存储在本地。我有一些使用 VBA 的经验,所以我打算尝试使用它(也许将目录放在电子表格中并运行一个宏……)
当我将它们存储在本地时,我需要保留它们来自的目录的名称。
我们将非常感谢任何帮助,随着我被发送更多目录并且手动过程将无法很好地扩展,因此自动化变得越来越必要。
非常感谢任何帮助,为我指明方向或提供建议。
干杯
【问题讨论】:
标签:
vba
file
powershell
copy
【解决方案1】:
您可以使用 PowerShell 中的 Copy-Item cmdlet 结合 -recurse 和 -container 开关来复制和保留文件夹结构!备份完整的网络文件夹以及所有子文件夹非常棒!
这是我的源目录。
C:\temp\stack>tree /F
Folder PATH listing
Volume serial number is 0000000B 9215:D0CB
C:.
├───Dest
└───Source
├───1
│ Archive.rar
│ File01.bmp
│
├───2
│ Archive.rar
│ File01.bmp
│
├───3
│ Archive.rar
│ File01.bmp
│
└───4
3.txt
Archive.rar
File01.bmp
Ham.txt
如您所见,我在Source 中有一些文件和文件夹,每个文件和文件夹中都有子文件夹和子文件。不过,通过这个简单的 PowerShell 命令,我可以轻松地将整个结构移动到 Dest。
copy-item -Path c:\temp\stack\source -Destination C:\temp\stack\Dest -Container -Recurse
现在我在Dest 文件夹中维护了整个结构。
C:\temp\stack>tree /F
Folder PATH listing
Volume serial number is 000000DE 9215:D0CB
C:.
├───Dest
│ ├───1
│ │ Archive.rar
│ │ File01.bmp
│ │
│ ├───2
│ │ Archive.rar
│ │ File01.bmp
│ │
│ ├───3
│ │ Archive.rar
│ │ File01.bmp
│ │
│ └───4
│ 3.txt
│ Archive.rar
│ File01.bmp
│ Ham.txt
【解决方案2】:
Copy-Item 将如前所述工作。 robocopy 也是为此目的而构建的,将在 cmd 或 Powershell 中运行。运行robocopy /? 获取使用信息。
你可能想要这样的东西:
robocopy "Y:\Network\Source\Location" "C:\Local\Machine\Destination\Location" /E
/E 表示复制目录和所有子目录。