Skript, mis arhiveerib etteantud laiendiga failid - PowerShell
From ICO wiki
Jump to navigationJump to search
Lähteülesanne
Loo skript, mis küsib kasutaja käest faililaiendi (näiteks .txt) ja asukoha (ketta või kataloogi) ning pakib kõik sellest kataloogist leitud vastava laiendiga failid .zip arhiiviks failid-aasta-kuu-kp.zip (näiteks failid-2011-01-24.zip)
Argumendid
Antud skript küsib vajalikke parameetreid kasutajalt, argumentidega käsurealt midagi ette sööta ei õnnestu.
Skript
# Add-Zip funktsioon pärineb (paari pisimuudatusega) David Aikeni blogist (MSDN):
# http://blogs.msdn.com/b/daiken/archive/2007/02/12/compress-files-with-windows-powershell-then-package-a-windows-vista-sidebar-gadget.aspx
function Add-Zip
{
param([string]$zipfilename)
if(-not (test-path($zipfilename)))
{
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipfilename).IsReadOnly = $false
}
$zipPackage = (new-object -comobject Shell.Application).NameSpace((dir $zipfilename).FullName)
foreach($file in $input)
{
Write-host "Lisame faili:" $file
$zipPackage.CopyHere($file.FullName)
Start-sleep -milliseconds 500
}
}
Write-host "Sisesta laiend: "
$laiend = Read-host
$laiend = $laiend.TrimStart(".")
Write-host "Sisesta kataloog: "
$asukoht = Read-host
$kuupaev = Get-Date -format yyyy-MM-dd
$failinimi = "failid-" + $kuupaev + ".zip"
Write-Host "Arhiiv"$failinimi
get-childitem -recurse $asukoht\*.$laiend | add-zip $failinimi
Teadaolevad kitsaskohad
- Kõikvõimalikud veasituatsioonid (nt zip faili ei õnnestu ühel või teisel põhjusel luua) on katmata.
- Kui ühtegi faili ei leita, võiks sellest ka kasutajat teavitada. Praegu jääb mulje, et zip tehakse siiski valmis.