python - 如何在 Powershell 中使用 Tree 压缩文件
问题描述
我希望为已经压缩的文件使用命令行脚本甚至是 python 编码脚本来实现树类型函数。我将文件刻录到光盘上,并根据工作需要完成它们。有些文件需要压缩才能传输。
使用“Tree /f /a”时,我得到了我正在寻找的文件的良好输出,但如果压缩文件在光盘上,它不会分解压缩文件中的内容。我没有看到任何其他可以生成压缩文件的树修饰符。有谁知道我可以通过管道(或帮助我在 python 或 C 中构建一个脚本)可以创建目录并在该目录中创建压缩文件?
我不擅长编码,所以请原谅我的新手编码能力。我知道 python 代码将不得不拉目录,把它树出来。当它找到一个 zip 文件来解压缩文件时,它需要一些“if”,也许还有一些“when”语句,然后将文件树化。然后继续到目录中的下一个文件,直到所有文件都被树化。
这些文件始终位于最终/已关闭的光盘上,因此我什至不确定您是否可以解压缩文件以将其树化。更别说把它拉上拉链了?任何帮助将不胜感激。谢谢!
通常我这样做是为了在光盘托盘中树出光盘,但它不会树压缩文件。我总是将树输出到 .txt 文件中以供审查和文件传输存档。
“tree /f /ad:/ > c:/filetransfer/transfer/“日期”/transfer.txt”</p>
解决方案
好的,这里有一段超级基本的代码,可以在 PowerShell 中进行树形处理。它绝对可以使用一些润色来绘制 Tree 所做的所有漂亮线条,但它至少会扩展 zip 文件。
Add-Type -assembly "system.io.compression.filesystem"
Function Tree-Path($Path){
(' - '*($Path.Split('\/').Count -1))+$Path.Split('\/')[-1]
}
Function Tree-ZipFile($ZipFilePath){
$ZipFile = [io.compression.zipfile]::OpenRead($ZipFilePath)
$ZipFile.Entries.FullName|Group {($_ -replace '/[^/]+$').TrimEnd('/')}|%{
Tree-Path ("$ZipFilePath\"+$_.Name)
$_.Group|Select -skip 1|%{Tree-Path "$ZipFilePath\$_"}
}
$ZipFile.Dispose()
}
GCI D:\ -Recurse|% -begin {$_.Parent} -process {
If($_.Extension -eq '.zip'){
Tree-Path $_.FullName
Tree-ZipFile $_.FullName
}Else{
Tree-Path $_.FullName
}
}
推荐阅读
- javascript - 在redux react中存储时刻js对象可以吗?
- perl - 将十六进制转换为二进制并保持领先 0 的 Perl
- chart.js - Chart.js 示例不起作用
- c# - 在 foreach 循环中应用实体配置
- java - 二维数组和 deepToString 是如何工作的?
- php - Linux + Nginx:NodeJS + WordPress + Symfony
- java - 第二个按钮不起作用
- ruby-on-rails - 在根级别运行 rails 命令“rails _5.1.0_ new test1”时出错
- php - 使用 PHP 强制下载图像的对话框
- c# - 将选项卡导航限制为 UI 元素