Как включить zip-файлы с похожим именем в путь (powershell) - PullRequest
0 голосов
/ 23 апреля 2020

Привет, у меня есть этот скрипт (тот, что показан ниже), и я хочу включить все zip-файлы из этого каталога, которые включают cc в их имени. И хотя я использую подстановочный знак, он говорит, что $ path содержит недопустимые символы.

Есть идеи?

$Path = "\\fas270_ctrl1\Cifs\INP_OUT_DIAS_PROXY_FILES\*ACC*.*" 

$descriptions = "*ACC*.FAO" 

$Filter = $descriptions

$OutPath = 'C:\results'

Add-Type -AssemblyName System.IO.Compression.FileSystem 

$zip = [System.IO.Compression.ZipFile]::OpenRead($Path) 

$zip.Entries | 
  Where-Object { $_.FullName -like $Filter } |
  ForEach-Object { 

    $FileName = $_.Name
    [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$OutPath\$FileName", $true)
    }

$zip.Dispose()

explorer $ OutPath

1 Ответ

0 голосов
/ 23 апреля 2020

Необходимо указать абсолютный путь к файлу (файлам) для метода OpenRead (без подстановочных знаков). Относительные пути интерпретируются как относительные (. NET) к текущему рабочему каталогу, но это может отличаться от текущего пути для PowerShell.

Я также рекомендую использовать командлет Join-Path для объединения путь вывода с именем файла, чтобы вы не пропустили обратную косую черту или не добавили слишком много из них.

Примерно так:

$Path         = "\\fas270_ctrl1\Cifs\INP_OUT_DIAS_PROXY_FILES"
$descriptions = "*ACC*.FAO"
$Filter       = $descriptions
$OutPath      = 'C:\results'

# make sure the output path exists and if not, create it
if (!(Test-Path -Path $OutPath -PathType Container)) {
    $null = New-Item -Path $OutPath -ItemType Directory
}

Add-Type -AssemblyName System.IO.Compression.FileSystem 

foreach ($file in (Get-ChildItem -Path $Path -Filter '*ACC*.zip' -File))  {  # you may want to add switch -Recurse
    $zip = [System.IO.Compression.ZipFile]::OpenRead($file.FullName) 
    $zip.Entries | Where-Object { $_.Name -like $Filter } | ForEach-Object {
        $fileOut = Join-Path -Path $OutPath -ChildPath $_.Name
        [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $fileOut, $true)
    }
    $zip.Dispose()
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...