Использование 7za из PowerShell с параметром -xr

Я использую сценарий PS для сжатия папки с помощью 7za. Если я использую параметр -xr для исключения некоторых файлов, сжатие завершается неудачно с предупреждением, когда элементы для сжатия равны 0. Если я запускаю из Power Shell (не из сценария), у меня возникает та же проблема.

Если я запустил ту же команду из командной строки все работает нормально. Также, если я не использую флаг -xr, сжатие работает.

PS d:\data> e:\backup\7za a -y e:\backup\data.7z * -xr!*.7z
0
задан 13 August 2016 в 16:36
2 ответа

В PowerShell (!) Это зарезервированный символ, обозначающий not / отрицание.

PS C:\> $true
True
PS C:\> !$true
False

Внутри CMD (!) не имеет особого значения
В CMD я могу запустить следующее, и оно работает:

7za.exe a -y .\test.7z .\* -xr!*.exe

В Powershell следующее выдает ошибку:

.\7za.exe a -y .\test.7z .\* -xr!*.exe
<extra lines removed>
.exe:  WARNING: The system cannot find the file specified.

Внутри PS я смог передать аргумент, который использует (!), Заключив его в одинарные кавычки, что заставляет содержимое должно рассматриваться как буквальное.

.\7za.exe a -y .\test.7z .\* '-xr!*.exe'

Не пытайтесь заключить $ var в одинарные кавычки, это не будет расширяться.

1
ответ дан 4 December 2019 в 16:31

hoʻāʻo:

try{
   & "e:\backup\7za" a -y "e:\backup\data.7z" * -xr!*.7z
}catch{
   Write-Error $_;
}finally{
   Write-Host "check if error and continue";
}

he hana naʻu. hoʻokahi laina:

PS> try{ & "e:\backup\7za" a -y "e:\backup\data.7z" * -xr!*.7z; }catch{  Write-Error $_;  }finally{ Write-Host "check if error and continue";  }

ʻO ʻoe nalowale '&' ma mua o kāu kauoha. Nā ʻike hou aku ma aneʻi: https://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx#reCodeBlock , Mokuna 5.

0
ответ дан 4 December 2019 в 16:31

Теги

Похожие вопросы