PowerShell'in bir sürü klasörün içeriğini sıkıştırmasını ve her klasör için ayrı bir ZIP dosyası almasını isterdim. Son zamanlarda, bunu bir .bat dosyasıyla nasıl yapacağımı sordum ve bir cevap verildi.
for /D %%d in (*.*) do "C:\Program Files\7-Zip\7z\7za.exe" a -tzip %%d.zip %%d
Ancak, bu yalnızca adlarında boşluk olmayan klasörler için yararlı oldu. Bu partinin olmasının nedeni aşağıdakileri yapar: Klasörün adı "Jeff'in tatil resimleri" ise, değişkenler şöyle olacaktır:
%%d = Jeff's<br>
%%e = vacation<br>
%%f = pictures<br>
Ve sonra sadece %%d
7-Zip programına geçmeye çalışır , bu böyle bir klasör bulamaz ve bu nedenle ZIP dosyası oluşturmaz.
Bazı dersleri, dökümantasyon sitelerini ve benzeri şeyleri araştırmaya çalıştım, ancak bir cevap bulamadım. Bir cevap olabilir, ama elimden geleni PowerShell'de denemek için bu fırsatı değerlendirmek istiyorum.
Bir argümanlı bir işlevin, sıkıştırılması gereken alt klasörlerin ana klasörü olmasının en iyi yaklaşım olacağını düşünüyordum.
İşte elimde olan, işe yaramayan şey, muhtemelen PowerShell'deki genel deneyimim nedeniyle:
function zipFolders($parent) {
$zip = "C:\Program Files\7-Zip\7z\7za.exe";
$parents | ForEach-Object $zip a -tzip
}