PowerShell: Kopeerija: Difference between revisions

From ICO wiki
Jump to navigationJump to search
(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) {
    #copy-item ($dir + $fail) ($loc) -recurse;
     robocopy ($dir + $fail) ($loc) /e | out-null;
     robocopy ($dir + $fail) ($loc) /e | out-null;
     } else {
     } else {
    #copy-item ($dir + $fail) ($loc);
     robocopy ($dir + $fail) ($loc) | out-null;
     robocopy ($dir + $fail) ($loc) | out-null;
     }
     }
Line 86: Line 84:
   }
   }
}
}
#$failid = @();
#foreach ($element in $array) {
#if ($element -like ('*' + $file + '*')) {
#$failid += $element;
#}
#}


[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. 

  1. >

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; }

}