Running a command on each directory in a list using PowerShell Running a command on each directory in a list using PowerShell powershell powershell

Running a command on each directory in a list using PowerShell


You don't need to set the location, you just just provide paths to 7z.exe. Also, 7zip does not compress to Rar, only decompress.

$dir = dir d:\directory | ?{$_.PSISContainer}foreach ($d in $dir){    $name = Join-Path -Path $d.FullName -ChildPath ($d.Name + ".7z")    $path = Join-Path -Path $d.FullName -ChildPath "*"    & "C:\Program Files\7-Zip\7z.exe" a -t7z $name $path}


If you don't want to remove the logs after zipping it, comment out the 3rd line

function zip-log {    Compress-Archive *.log Logs.zip     Get-Item *.log | Remove-Item -Force     }$dir = Get-ChildItem d:\directory| ? {$_.PSIsContainer}$dir | ForEach-Object {Set-Location $_.FullName; zip-log}