Как использовать Tree в powershell для заархивированных файлов - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу использовать сценарий командной строки или даже код python для функции типа дерева для уже заархивированных файлов. Я записываю файлы на диски и дорабатываю их под рабочие требования. Некоторые файлы должны быть заархивированы для передачи.

При использовании «Tree / f / a» я получаю хороший вывод искомых файлов, но если заархивированный файл находится на диске c, он не выполняет разбивку содержимое в заархивированном файле. Я не вижу никаких других модификаторов для дерева, которые могли бы вытащить заархивированный файл. Кто-нибудь знает, к чему я могу направить (или помочь мне создать скрипт в python или C), который может создавать дерево каталогов и архивировать файлы в этом каталоге?

Я не очень хорош в кодировании Прости меня за мои начинающие способности по кодированию. Я знаю, что python код должен будет вытащить каталог, вывести его из дерева. ему понадобятся некоторые операторы «если» и, возможно, несколько операторов «когда», когда он найдет zip-файл, чтобы разархивировать файл, составить дерево. Затем перейдите к следующему файлу в каталоге, пока все файлы не будут обработаны.

Файлы всегда находятся на закрытом / закрытом диске c, поэтому я даже не уверен, что вы можете разархивировать файл, чтобы поместить его в дерево. Не говоря уже о том, чтобы восстановить его? Любая помощь будет с благодарностью. Спасибо!

Обычно я делаю это для того, чтобы выложить диск c в лоток для диска dis c, но это не дерево архивных файлов. Я всегда выводю дерево в файл .txt для просмотра и архивов передачи файлов.

«tree / f / ad: /> c: / filetransfer / перевод /« date »/transfer.txt»

1 Ответ

0 голосов
/ 02 марта 2020

Хорошо, вот супер элементарный фрагмент кода, который будет реализован в PowerShell. Он может определенно использовать некоторую поли sh, чтобы нарисовать все красивые линии, которые делает 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...