Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VBA: Varmuuskopiointien tekeminen (VBScript)

Sivun loppuun

Aku2 [01.01.2004 14:20:17]

#

VBScriptillä voi helposti luoda ilman mitään koodaustyökaluja itselleen varmuuskopiorutiinin.
Alla esimerkkejä erilaisista varmuuskopiointitavoista.
Kun VBScripti on kirjoitettu esimerkiksi Notepadilla (Muistio), tallenna se vbs päätteiseksi tiedostoksi.
Tiedoston ajaminen onnistuu joko resurssinhallinnasta tuplaklikkaamalla kyseistä tiedostoa tai komentokehotteen kautta kirjoittamalla "cscript tiedosto.vbs", jossa tiedosto on sen niminen, kuin olet sen tallentanut.
HUOM! Kopionti korvaa aikaisemmin kopioidut tiedostot ilman että tietokone ilmoittaisi siitä yhtään mitään!

Scriptit toimii suoraan käyttöjärjestelmissä:
Windows NT 4.0, 2000, XP ja 2003 servereissä.
Windows 98:ssa sen saa toimimaan, kun asentaa ensin Microsoftin Windows Scripting Hostin.

Esimerkki 1
Alla oleva koodi kopioi vain tietyssä kansiossa olevat tiedostot, joiden pääte on .txt. Korvaa "hakemisto" kohdat sellaisilla hakemistonimillä, joita sinulta jo löytyy. Jos niitä ei ole, antaa scripti virheilmoituksen.

Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\hakemisto\*.txt" , "D:\hakemisto\" , OverwriteExisting

Esimerkki 2
Alla oleva koodi kopioi koko kansion alikansioineen määrittelemääsi paikkaan.
Korvaa tässäkin esimerkissä "hakemisto" nimet sellaisiksi, jotka koneeltasi jo löytyy.

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\hakemisto" , "D:\hakemisto" , OverWriteFiles

Esimerkki 3
Ongelmallisinta tässä kopioinnissa on se, että esimerkit 1 ja 2, eivät näytä kopioinnin tilaa missään vaiheessa, joten mm. messageboxeilla voidaan tehdä ilmoitukset kun varmuuskopiointi alkaa ja kun se on päättynyt. Näin käyttäjä tietää että Scripti on käynnistetty ja milloin se on suorittanut itse kopioinnin. Alla esimerkki 2:teen on lisätty nämä ilmoitukset.

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
msgbox "Varmuuskopiointi aloitettu tausta-ajona!"
objFSO.CopyFolder "C:\hakemisto" , "D:\hakemisto" , OverWriteFiles
msgbox "Varmuuskopiointi valmis. Varmuuskopio tallennettu kansioon D:\hakemisto."

Antti Laaksonen [02.01.2004 14:09:27]

#

Saman voisi kait (viesti-ikkunaa lukuunottamatta) toteuttaa BAT-tiedostolla, jolloin se toimisi kaikissa Windowseissa ainakin versiosta 3.x alkaen.

@echo off
echo "Varmuuskopiointi aloitettu."
copy /y c:\hakemisto\*.* d:\hakemisto\
echo "Varmuuskopiointi valmis."

ZcMander [02.01.2004 14:30:16]

#

Ehkä 3 esimerkissä hakemiston sijainnin olisi voinut laittaa muuntajaan, josta, sitten luetaan msgboxsissa.

Yllättäjän samannäköstä koodia VB verrattuna.

sooda [02.01.2004 15:32:44]

#

samaa mieltä antin kanssa, batissa on munkin varmuuskopioinnit. ja xcopy rulettaa...

Aku2 [02.01.2004 16:37:53]

#

Lähinnä käytettävyydessä ero tulee kun tuota lähtee soveltamaan enemmän omiin tarkoituksiinsa.
Esimerkiksi tuohon voisi tehdä lisärivejä, jotka pitäisi kirjaa varmuuskopioinneista, joka tietääkseni ei bateilla kovin helposti luonnistu.
Kysehän on kuitenkin vain koodivinkistä, ei niinkään valmiiksi tehtyä täydellistä toimintoa.
Koodivinkeistä opitaan ja niitä käytetään omiin tarkoituksiin soveltaen.
Soveltamiseen FSO:lla on huomattavasti laajempi mahdollisuus kuin bateilla.

PS. tietääkseni tuo FSO:lla tiedostojen kopiointi on muutoinkin nopeampi toimenpide kuin normaalilla copy tai Xcopya käytettäessä. ainankin itse huomasin kokeillessani kopioida suurempaa tiedostomäärää FSO:n olevan jonkin verran nopeampi.

miiro [04.01.2004 19:07:01]

#

Echon jälkeen ei hipsuja, Antti!

netman87 [12.05.2005 12:11:30]

#

varmuuskopiointi on batil yksinkertasuudessaan

copy c:\hakemisto\*.* d:\hakemisto

batista:
1. echon jälkeen ei tarvi "-merkkiä
2. dossi riittää (myös komentokehote)

miiro [21.12.2005 15:33:23]

#

Jos haluaa pitää kirjaa varmuuskopioiduista tiedostoista:

@echo off
echo Varmuuskopijoidaan...
copy /y c:\hakemisto\*.* d:\hakemisto\
echo varmuuskopiointi /y c:\hakemisto\*.* d:\hakemisto suoritettu. >> C:\varmuuskopiokirjanpito.txt
echo Kopijoitu.

mescali [20.11.2006 12:27:20]

#

copy /y c:\hakemisto\*.* d:\hakemisto\

Mitä tuossa lauseessa tuo /y tarkoittaa?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta