powershell - 将文件压缩到完全相同的文件夹路径,但在不同的驱动器/服务器上
问题描述
我目前正在尝试将大量文件夹 (~550) 从我的数据服务器 (Q:) 压缩到我的存档服务器 (V:)。目标是将所有 550 个选定文件夹移动到我的 V:服务器,同时保留完全相同的文件夹结构。我想使用 7Zip 的命令行来执行此操作,7za
因为有人告诉我 PowerShell 在Compress-Archive
处理大文件时非常麻烦。
所以我的想法是将(Q:)的整个文件夹结构复制到(V:)而不复制任何文件。这样我就可以简单地使用不同的驱动器号压缩到完全相同的路径。我已经这样做了,现在 Q: 和 V: 有相同的文件夹树。
$listPath = "Q:\SourceNEW.csv"
$homepath = "data\clients"
$list = import-csv $listPath -Encoding UTF8
$driveone = "Q:\"
$drivetwo = "V:\"
foreach ($user in $list) {
$pathA = Join-Path ($driveone + $homepath) -ChildPath $user.username #Q:\ + data\clients + \A\Aclient\Aproject
$pathB = Join-Path ($drivetwo + $homepath) -ChildPath $user.username #V:\ + data\clients + \A\Aclient\Aproject
$pathsplit = Split-Path -Path $pathB -Leaf
if (-not (Test-Path "$env:ProgramFiles\7-Zip\7z.exe")) {
throw "$env:ProgramFiles\7-Zip\7z.exe needed"
}
Set-Alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz a -an -mx=5 $PathB $PathA
}
这适用于将指定文件夹从 Q: 复制到 V:,因为它只影响 CSV 中列出的文件。现在我的问题是,除了最终排序的 7z 文件之外,7Zip 还在“V:\”中创建了一个“__.7z”文件,这只是我的 Q: 驱动器的全部。我错过了两次拉上拉链的东西?
解决方案
推荐阅读
- mysql - SQLSTATE[HY000] [1045] 使用 Docker 拒绝用户 'root'@'172.19.0.4' 的访问
- uwp - 是否可以通过 WiFi 或蓝牙在两个 Hololens 之间建立直接连接?
- javascript - 另一个 javascript 奇迹 6 == 6 是错误的
- xamarin.forms - 反应式 UI 数据持久性
- python - 我如何绘制一个圆圈,但排除其他圆圈中包含的区域的颜色
- node.js - 是否可以使用比 AWS Lambda 中提供的更新版本的 aws-sdk?
- visual-studio-code - VsCode 中的方法引用
- r - 使用 R 在 Tableau 中复制 Excel chisq.test 函数
- spring-boot - 如何实现 Grails + Spring Boot + Vaadin Flow?
- c# - 使用 RoleManager 创建新角色