Я был бы, чтобы сделать, чтобы PowerShell архивировал содержание набора папок и получил отдельный zip-файл для каждой папки. Недавно, я спросил, как сделать, это с .bat файлом и ответом было обеспечено.
for /D %%d in (*.*) do "C:\Program Files\7-Zip\7z\7za.exe" a -tzip %%d.zip %%d
Однако это оказалось полезным только для папок, которые не имеют никаких пробелов на их имя. Так как причиной будет тот пакет, сделает следующее: если имя папки будет "изображениями отпуска Jeff", то переменные будут:
%%d = Jeff's<br>
%%e = vacation<br>
%%f = pictures<br>
И затем это пытается передать только %%d
к программе С 7 zip, которая не найдет такую папку и поэтому не создаст zip-файл.
Я попытался искать некоторые учебные руководства, сайты документации и такой, но я не смог придумать ответ. Может быть ответ, но я хочу воспользоваться этой возможностью, чтобы попробовать мои силы в PowerShell.
Я думал, что функция с одним аргументом, что, будучи родительской папкой подпапок, которые должны быть заархивированы, была бы лучшим подходом.
Таким образом, вот то, что я имею, который не работает, вероятно, из-за моей общей неопытности с PowerShell:
function zipFolders($parent) {
$zip = "C:\Program Files\7-Zip\7z\7za.exe";
$parents | ForEach-Object $zip a -tzip
}
Необходимо дать С 7 zip имя выходного файла и название входного каталога для него для работы. Вы также хотите звонить, Заставляют-ChildItem (dir) на Вашем родительском пути получать его подпути.
Следующий отрывок должен поместить каждую подпапку $rootFolder
в макс. zip-файл сжатия, названный в честь подпапки в текущем пути.
dir $rootFolder | Where-Object { $_.PSIsContainer } | ForEach-Object { C:\"Program Files"\7-zip\7z.exe a -mx9 "$_.zip" $_.FullName }