Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/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
Python 如何在powershell中使用树来压缩文件_Python_Powershell_Tree_Zip - Fatal编程技术网

Python 如何在powershell中使用树来压缩文件

Python 如何在powershell中使用树来压缩文件,python,powershell,tree,zip,Python,Powershell,Tree,Zip,我希望为已经压缩的文件使用一个命令行脚本,甚至是一个用于树型函数的python编码脚本。我将文件刻录到光盘上,并根据工作需要完成它们。有些文件需要压缩以便传输 当使用“Tree/f/a”时,我会得到一个很好的文件输出,但是如果光盘上有压缩文件,它不会分解压缩文件中的内容。我看不到任何其他树的修改器,可以树出一个压缩文件。有人知道我可以通过管道(或帮助我用python或C构建脚本)生成目录树并在该目录中生成压缩文件吗 我不擅长编码,所以请原谅我在编码方面的新手能力。我知道python代码必须将目录

我希望为已经压缩的文件使用一个命令行脚本,甚至是一个用于树型函数的python编码脚本。我将文件刻录到光盘上,并根据工作需要完成它们。有些文件需要压缩以便传输

当使用“Tree/f/a”时,我会得到一个很好的文件输出,但是如果光盘上有压缩文件,它不会分解压缩文件中的内容。我看不到任何其他树的修改器,可以树出一个压缩文件。有人知道我可以通过管道(或帮助我用python或C构建脚本)生成目录树并在该目录中生成压缩文件吗

我不擅长编码,所以请原谅我在编码方面的新手能力。我知道python代码必须将目录拉出来,将其树状化。当它找到一个zip文件时,需要一些“if”和“when”语句来解压文件,并将文件树出来。然后继续处理目录中的下一个文件,直到所有文件都被树化

这些文件总是放在一张已定稿/已关闭的光盘上,所以我甚至不确定是否可以解压一个文件以对其进行树状分类。更不用说把拉链拉起来了?任何帮助都将不胜感激。谢谢

通常我这样做是为了在光盘托盘中对光盘进行树状分类,但它不会对压缩文件进行树状分类。我总是将树输出到一个.txt文件中,以供审阅和文件传输存档


“tree/f/a d:/>c:/filetransfer/transfer/“date”/transfer.txt”

好的,下面是一段非常基本的代码,它将在PowerShell中对内容进行树化。它当然可以使用一些润色来绘制树所做的所有漂亮线条,但它至少可以扩展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
    }
}

使用
system.io.compression.filesystem
类型,您完全可以在PowerShell中读取zip文件的内容,但是将其转换为树格式听起来需要做的工作太多了。
[system.io.compression.ZipFile]::OpenRead('ZipFile.zip')。Entries.FullName
(PowerShell 6+)。感谢您的代码和建议。我绝对不会编写这样的代码,也不知道从哪里开始。我在房子的安全方面,所以我对这个领域不太了解。我们运行独立的系统,任何有帮助的东西都是值得花时间的,而不是手动在纸上分别为系统中传输的每一条数据阻塞文件路径。我将看看是否可以实现此代码,如果有任何问题,我将联系您。老实说,您最好运行
Get ChildItem D:\-Recurse |%FullName
,这将为您提供驱动器上所有内容的完整路径。@MadTechnician,您的命令不会深入到zip文件,这是问题的重点。