Как да накарам 7zip да презапише?

Някой имал ли е проблем с презаписването на файлове с 7zip. Използвам този скрипт:

    if ($name.Contains('something'))
 {
 Get-ChildItem \\server\load\$name | 
 % {
 & "C:\test\7z.exe" "x" "-aoa" "-y" $_.fullname "-o\\server\output"
   }
  }
else
{
"$name unknown"
}

Всичко работи добре, когато изтриете файлове, преди да задействате скрипт, но няма да презаписва нови файлове. Използвам -aoa за това, но може би има различен ключ за това? Когато се опитам да извлека файлове на 7zip GUI и да презапиша също добре, така че предполагам, че не е проблем с разрешението.

Благодаря


person WhiteHorse    schedule 23.04.2014    source източник


Отговори (1)


Опитайте да използвате това:

&"C:\test\7z.exe" x -aoa -y "$_.fullname" -o"\\server\output"

Според моя опит & не е много съвместим с начина, по който обработва аргументи. Като цяло обаче трябва да приемете, че PowerShell не премахва кавички от аргументи, когато използвате &. Трябва да използвате кавички само когато програмата, която извиквате, се нуждае от тях в собствените си аргументи. В моя скрипт, който архивира IIS регистрационни файлове, използвам това:

&"$7Zip" a "$ArchiveFile" "$FullLogPath\$LogFileSpec" -mx=9 -mmt=on

Променливите са просто имена на пътища или файлове. Кавичките са там просто защото пътищата и имената на файловете могат да имат интервали в тях.

Начинът, по който обикновено го разбирам, е чрез Write-Host низа, който & ще извика, след което го копирам и поставям в прозорец на cmd.exe shell

person Bacon Bits    schedule 23.04.2014
comment
Благодаря за отговора. За съжаление вашето решение дава същия резултат. Може би трябва да разархивирам файлове на друго място и да ги преместя принудително? - person WhiteHorse; 24.04.2014
comment
хм Това може да свърши работа. Единственото нещо, което мога да мисля тогава, е, че това е проблем, защото отдалечените файлове са заключени или просто проблем с изхода към отдалечен път. Ако обаче същият ред работи, когато го въведете ръчно, това няма смисъл за мен. - person Bacon Bits; 25.04.2014
comment
Днес гледах дали файловете са заключени със скрипт от този човек: mspowershell .blogspot.com.es/2008/07/locked-file-detection.html Преди актуализирането файловете не бяха заключени. пак същия резултат. Мисля, че нещо не е наред със 7zip, ще опитам друг инструмент за архивиране утре. - person WhiteHorse; 28.04.2014
comment
Имах проблеми с това, че не се представя правилно за потребителя, особено с активиран UAC. Ако се опитате да видите изображение, като щракнете двукратно върху него от архива с активиран UAC, 7-Zip губи следите на файла. Можете да опитате да използвате System.IO.Packaging.ZipPackage с Powershell 3.0+, ако сте от типа, който се нуждае от неща в действителния PowerShell, или разширенията на общността на pscx.codeplex.com, който включва ZIP приспособление. - person Bacon Bits; 28.04.2014
comment
Мисля, че можем да затворим този въпрос. Ще пробвам вашите решения. Също така мисля за преименуване на съществуващи елементи преди разархивиране и след това изтриване на преименуваните файлове. Би било най-лесното решение, ако това работи :) Благодаря за помощта. - person WhiteHorse; 29.04.2014
comment
Само като точка на реда, тук през април 2020 г., това все още е проблем при стартиране на 7-Zip от PowerShell. Той просто няма да презапише файлове, без първо да ги изтрие. Не знам защо и този въпрос не го разреши. - person ggariepy; 15.04.2020