Skript, mis arhiveerib etteantud laiendiga failid - PowerShell: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
Line 1: Line 1:
[[Category: Skriptimiskeeled]]
==Lähteülesanne==
==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)
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)

Latest revision as of 10:45, 13 May 2011


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.