44 lines
2.1 KiB
HTML

<!-- 25 -->
<p>
Esta función la hice por que a veces tengo que analizar archivos del INEGI y al momento de descargar los datos
abiertos vienen comprimidos en multiples archivos zip y como era una
tarea repetitiva ví que podía automatizarla de tal forma que pueda descomprimir todos los archivos zip en un
directorio, para usarla es muy sencillo, solo debes de moverte
en la terminal hasta el directorio donde están todos tus archivos zip y luego hacer el llamado de la función,
ejemplo: <br><br>
Imaginemos que tenemos una carpeta con 32 archivos zip que queremos descomprimir y en la terminal ya estoy ubicado
en ese directorio, solo debo hacer el llamado de la función unzip:
</p>
<div class="img zoomable">
<img src="/static/source_imgs/powershell/pst_4/1.png" alt="" style="height: 350px; width: auto;">
</div>
<p>
La salida del comando nos informa de forma iterativa el nombre del archivo que se va descomprimiendo y el número de
archivo del total de archivos a descomprimir, al final nos informa que ya se han descomprimido los archivos.
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode">
function unzip {
# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-7.2
$curP = $pwd
$Zips = Get-ChildItem -path $curP -filter "*.zip"
$Destination = $curP
$numFiles = (Get-ChildItem -Filter "*.zip" | Measure-Object).Count
if ($numFiles -eq 0) {
Write-Warning "No hay archivos zips para ser descomprimidos"
}
elseif ($numFiles -eq 1) {
Write-Host "Descomprimiendo: " $Zips.name -ForegroundColor Yellow
Expand-Archive $Zips.name -Force
Write-Host "Proceso finalizado " -ForegroundColor Green
}
elseif ($numFiles -gt 1) {
foreach ($_ in $Zips) {
$nRound = [math]::Round(((($Zips.IndexOf($_) + 1) / $numFiles) * 100), 2)
Write-Host "" ($Zips.IndexOf($_) + 1) " de " $numFiles " | " $nRound "% | Descomprimiendo: " $_.name -ForegroundColor Yellow
Expand-Archive $_ -Force
}
Write-Host "Proceso de descompresion finalizado exitosamente" -ForegroundColor Green
}
}
</code></pre>