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

From ICO wiki
Jump to navigationJump to search
(Created page with '==Ü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 …')
 
No edit summary
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
==Ülesanne==
[[Category: Skriptimiskeeled]]
 
==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)
==Argumendid==
Antud skript küsib vajalikke parameetreid kasutajalt, argumentidega käsurealt midagi ette sööta ei õnnestu.
==Skript==
<source lang="powershell">
# 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
</source>
==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.

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.