ls в извлеченный каталог - PullRequest
0 голосов
/ 25 января 2020

Используя PowerShell, я загружаю и извлекаю файл, в котором есть каталог, и другой файл в нем (в основном это https://aka.ms/downloadazcopy-v10-windows). Я хотел бы иметь возможность попасть в каталог после извлечения.

Итак, в PS я нахожусь на c:\AzCopyTest при загрузке файла. Он извлекается в том же месте. Вот код для этого:

$URL = "https://aka.ms/downloadazcopy-v10-windows"
New-Item -ItemType Directory -Path c:\AzCopyTest
$Destination = "c:\AzCopyTest\zzz.zip"
$WebClient = New-Object -TypeName System.Net.WebClient
$WebClient.DownloadFile($URL, $Destination).

$ExtractLocation = "c:\AzCopyTest"
$ExtractShell = New-Object -ComObject Shell.Application
$file = $ExtractShell.NameSpace($Destination).Items()
$ExtractShell.NameSpace($ExtractLocation).CopyHere($file)

Как я могу попасть в папку после завершения извлечения? К вашему сведению, я не хочу ls напрямую (или вместо этого вручную). Я хотел бы иметь возможность перечислить элементы в этом каталоге и получить первый каталог. azcopy_windows_amd64_10.3.4 это то, что каталог называется BTW. Теперь, когда MS выпустит новую версию (скажем, 10.3.5), каталог будет переименован, и я не хочу, чтобы go вернулся и изменил его вручную. Вы получите, куда я иду с этим ..

Я знаю, Get-ChildItem -Path ("$ExtractLocation") -Recurse перечислит элементы в каталоге и подкаталогах. Но это, к сожалению, не служит моей цели.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 25 января 2020

Я попробовал это: Get-ChildItem -Path $ExtractLocation -Recurse -Directory -Force -ErrorAction SilentlyContinue | Select-Object).Name, и это сработало.

К вашему сведению, если позже MS решит добавить еще один каталог в заархивированный файл, вы можете просто сделать это:

Get-ChildItem -Path $ExtractLocation -Recurse -Directory -Force -ErrorAction SilentlyContinue | Select-Object).Name[<position_of_the_directory_starting_from_0]

...