PowerShell: Kopeerija: Difference between revisions
Created page with '<Source lang="powershell"> <# .SYNOPSIS Skript kopeerib faile. .DESCRIPTION Kuna skriptil on täielik graafiline liides, ei pea käsureale eraldi võtmeid sisestama. Skri…' |
No edit summary |
||
Line 44: | Line 44: | ||
foreach ($fail in $array) { | foreach ($fail in $array) { | ||
if ((Test-Path ($dir + $fail) -pathtype container) -eq $True) { | if ((Test-Path ($dir + $fail) -pathtype container) -eq $True) { | ||
robocopy ($dir + $fail) ($loc) /e | out-null; | robocopy ($dir + $fail) ($loc) /e | out-null; | ||
} else { | } else { | ||
robocopy ($dir + $fail) ($loc) | out-null; | robocopy ($dir + $fail) ($loc) | out-null; | ||
} | } | ||
Line 86: | Line 84: | ||
} | } | ||
} | } | ||
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') |
Latest revision as of 14:09, 22 May 2012
<Source lang="powershell">
<#
.SYNOPSIS
Skript kopeerib faile.
.DESCRIPTION
Kuna skriptil on täielik graafiline liides, ei pea käsureale eraldi võtmeid sisestama. Skripti käivitades kuvatakse kasutajale algkausta asukoha valiku dialoog (kust faile otsitakse), järgmiseks küsitakse failinime (sisestatud sõne järgi otsitakse failnimest, ehk otsitakse faile, mille nimes sisaldub otsitav sõne), järgmiseks küsitakse kas teostada failiotsingut valitud algkausta alamkaustadest, järgmiseks kuvatakse leitud failide nimekiri ning küsitakse failide kopeerimise kinnitust. * Skript kopeerib kaustu rekursiivselt (leitud kaustad koos sisuga). * Kaustadest, mis ei ole failisüsteemi osa (nt Recycle Bin, Control Panel jne) ei saa otsida ega kopeerida. * Kui valida algkausta asukohaks mõni juurkaust ning teostada otsingut ka alakaustadest, võib otsing kesta väga kaua.
.EXAMPLE
C:\PS>.\skript.ps1 Käivitamisel pole eraldi võtmeid vaja kuna skript küsib ning informeerib toimingutest graafilises liideses.
.NOTES
Autor: Teet Saar - õpperühm A22 Versioon: 1.0 Muutmise kuupäev: aprill 2012. a.
.LINK (kasutatud materjalid)
* http://powershell.com/cs/media/p/627.aspx - alg/sihtkausta valimise dialoogi funktsioon. * http://powershell.com/cs/media/p/386.aspx - otsingutermini sisestamise aken. * http://bartdesmet.net/blogs/bart/archive/2006/09/16/4429.aspx - lihtne tagasiside aken.
- >
function Select-Folder ($message='Vali kaust:', $path = 0) {
$object = New-Object -comObject Shell.Application $folder = $object.BrowseForFolder(0, $message, 0, $path) if ($folder -ne $null) { $folder.self.Path } }
function kopeeri { foreach ($fail in $array) {
if ((Test-Path ($dir + $fail) -pathtype container) -eq $True) { robocopy ($dir + $fail) ($loc) /e | out-null; } else { robocopy ($dir + $fail) ($loc) | out-null; } }
}
$dir = Select-Folder; if ($dir -like ('*' + '::{'+ '*')) { [System.Windows.Forms.MessageBox]::Show("Valitud asukohast ei saa otsida") exit; } if ($dir -like ('*' + '\')) { } else { $dir = ($dir + '\'); } if (!$dir) { exit; }
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') $file = [Microsoft.VisualBasic.Interaction]::InputBox("Sisesta otsitav failinimi", "Otsingupäring") if (!$file) { exit; }
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') $result = [Microsoft.VisualBasic.Interaction]::MsgBox( `
("Kas soovid otsida ka alakaustadest"), 'YesNo,Question', "")
switch ($result) {
'Yes' { $array = get-childitem -recurse -name -filter ('*' + $file + '*') -path $dir; } 'No' { $array = get-childitem -name -filter ('*' + $file + '*') -path $dir; }
}
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') $result = [Microsoft.VisualBasic.Interaction]::MsgBox( `
("Kas soovid faile kopeerida: " + $array), 'YesNo,Question', "")
switch ($result) {
'Yes' { $loc = Select-Folder; if ($loc -like ('*' + '::{'+ '*')) { [System.Windows.Forms.MessageBox]::Show("Valitud sihtkohta ei saa kopeerida") exit; } if ($loc -like ('*' + '\')) { $loc = $loc; } else { $loc = ($loc + '\'); } if (!$loc) { exit; } kopeeri; [System.Windows.Forms.MessageBox]::Show("Failid on kopeeritud") } 'No' { [System.Windows.Forms.MessageBox]::Show("Faile ei kopeeritud") exit; }
}