Небольшая модификация команды powershell - PullRequest
0 голосов
/ 08 ноября 2018

Эта команда powershell отлично работает для копирования и распаковки zip-файлов в двух каталогах:

$shell = New-Object -COM Shell.Application
$target = $shell.NameSpace('D:\destination\')
$zip = $shell.NameSpace('D:\source\version_*.zip')
$target.CopyHere($zip.Items(), 16)

Однако я борюсь с модификацией, чтобы он выбрал только последний zip-файл из источника.

1 Ответ

0 голосов
/ 08 ноября 2018

Получить ZIP-файл с самой последней датой изменения в данном каталоге:

$source = "C:\temp"
$destination = "C:\temp\output"

$zipFile = Get-ChildItem -Path $source -Filter "*.zip" |
               Sort-Object LastWriteTime -Descending |
               Select-Object -First 1

Expand-Archive -Path $zipFile.FullName -DestinationPath $destination

Это работает путем поиска всех zip-файлов, сортировки их по дате изменения по убыванию и последующего получения «первого» (в соответствии с заданным порядком сортировки).

Я также использовал команду Expand-Archive, чтобы извлечь zip-файл в указанное место назначения. Если вам нужно скопировать zip-архив, то это достаточно просто с помощью командлета Copy-Item.


Как отмечали некоторые комментаторы: Expand-Archive был представлен в версии 5 PowerShell.

Однако логика получения «последнего» файла неизменна и может быть легко добавлена ​​в существующий скрипт:

$zip = $shell.NameSpace($zipFile.FullName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...