Avatar billede brincker Nybegynder
14. januar 2002 - 10:21 Der er 7 kommentarer og
1 løsning

VBS Logon script og W2K

Jeg bruger et vbs logon script for alle mine w2k brugere men har lidt problemer med at opdatere nogle skabelon filer.

Jeg har fået det til at kopiere skabelonen ind 1 gang man logger på, men hvis jeg nu skal opdatere skabelonen skal jeg kontrollere på dato og kopiere filen hvis kilde er nyere end destination. Jeg kan ikke umiddelbart finde ud af hvilken kommando jeg skal bruge. Jeg har prøvet med en copy iFFileIsNewer men den virker ikke og eksisterer nok heller ikke.

Hvis der samtidig er nogen der kan give mig nogle links til hvor jeg kan finde vbs kommandoer, så vil det være perfekt.
14. januar 2002 - 10:24 #1
Jeg lytter med
Avatar billede simon_jacobsen Nybegynder
14. januar 2002 - 11:36 #2
jeg også med på en lytter :)
Avatar billede tjacob Juniormester
14. januar 2002 - 11:42 #3
Du kunne bruge FileSystemObjectet til at tjekke disse ting.
Det tilføjes via Project/references...
-Vælg Microsoft Scripting Runtime

Med FSO kan du nu tjekke f.eks. et fil-objekt på adskillige properties:

DateCreated
DateLastModified
DateLastAccesed          -og mange andre

MVH tjacob
Avatar billede tjacob Juniormester
14. januar 2002 - 11:57 #4
Koden ville blive noget a la dette:
(er skrevet efter hukommelsen, så tjek lige syntaks m.m.)

Dim fso as New FileSystemObject, aFil as file, aDato as Date

    Set aFil = fso.GetFile(\"stiogfilnavntildinskabelon\")
    Set aDato = aFil.DateCreated

    \'Så kan du udføre din sammenligning, og kode derefter:
    If aDato < Now Then \'kopier filen
Avatar billede brincker Nybegynder
16. januar 2002 - 12:48 #5
Jeg har forsøgt mig med nedenstående, men får en fejl allerede i første linie der fortæller at navnet blev defineret igen og henviser til fso.

nogen idéer ?

Dim fso as New FileSystemObject, aFil as file, aDato as Date
Dim fso as New FileSystemObject, bFil as file, bDato as Date

If ShowDebugCmd Then wscript.echo \"Kopierer brev.dot\"
    Set aFil = fso.GetFile(oShell.ExpandEnvironmentstrings(\"%appdata%\") & \"\\Microsoft\\Templates\\brev.dot\")
    Set aDato = aFil.DateCreated
  If ShowDebugCmd Then wscript.echo \"lokal fil oprettet\" & adato
    Set bFil = fso.GetFile(oShell.ExpandEnvironmentstrings(\"%logonserver%\") & \"\\netlogon\\Skabeloner\\brev.dot\")
    Set bDato = bFil.DateCreated
  If ShowDebugCmd Then wscript.echo \"server fil oprettet\" & bdato
    If aDato < bdato Then  CopyFileIfExists oShell.ExpandEnvironmentstrings(\"%logonserver%\") & \"\\netlogon\\Skabeloner\\brev.dot\", TargetFolder2 & \"\\brev.dot\"
Avatar billede tjacob Juniormester
16. januar 2002 - 13:22 #6
Ja, du opretter jo det samme objekt (fso) som new 2 gange. Den går ikke.

Kals dem afso og bfso, så skulle det virke.

MVH tjacob
Avatar billede tjacob Juniormester
16. januar 2002 - 13:22 #7
kals = kald
Avatar billede mbl Novice
25. maj 2002 - 21:13 #8
Hej Brinker

Jeg har selv brugt denne kode med held.

Den laver følgende, den tjekker først om mappen er der. Hvis ikke, så opretter den mappen.

Den ser efter om filen er der. Hvis filen ikke er der laver den en kopi af master filer.

Næste gang du kører dit logon script kigger den først efter mappen igen og derefter tjekker den om filen er der, hvis filen er der kigger den om masterfilens datoen er nyere end den der ligger på clienter, hvis dato på masterfilen er nyere laver den en ny kopi på client.

Jeg er dog ved at ændre den lidt så den selv kigger efter hvad det er for filer der ligger i en eller flere mapper som også skal ligge på clienter.

Dim fso, fso1, fil1, fil2, f, f1, s, tal, navn1, filnavn
filnavn = "Test.txt"

'---------------------------------------------

  stiServer = "C:\Temp\"    'Sti til mappen på serveren
  stiClient = "D:\Temp\" 'Sti til mappen på Client
  Sti3 = "D:\Temp\" 'Sti til mappe der skal oprettes

Set fso = CreateObject("Scripting.FileSystemObject")  'Tjekker om der en mappen med
  If (fso.FolderExists(stiClient)) Then                    'samme navn som på maskinen

    Else
        Set fso = CreateObject("scripting.filesystemobject")
        fso.createfolder stiClient                          'der laves en ny mappe.
        Set fso = Nothing
  End If


  sti1 = stiServer & filnavn 'Sti til filen på serveren
  sti2 = stiClient & filnavn 'Sti til filen på Client


' Tjek filerne

Set fso = CreateObject("Scripting.FileSystemObject") 'Tjeker om der en fil med
  If (fso.FileExists(sti2)) Then                    'samme navn som på serveren
   
  Set fso = CreateObject("Scripting.FileSystemObject") 'Læser dato og tiden på filer
  Set f = fso.GetFile(sti1)                            'der ligger på serveren
  fil1 = f.DateLastModified
 
  Set fso = CreateObject("Scripting.FileSystemObject") 'Læser dato og tiden på filer
  Set f = fso.GetFile(sti2)                            'der ligger på Clienten
  fil2 = f.DateLastModified

If fil1 > fil2 Then  'Sammen ligner datoerne på fileren
 
  Set fso = CreateObject("scripting.filesystemobject") 'Nyere dato på filen som ligger på serveren
  fso.copyfile sti1, sti2                                'lav kopi af filen fra serveren
  Set fso = Nothing
                           
End If
   
  Else
 
  Set fso = CreateObject("scripting.filesystemobject") 'lav kopi af filen fra serveren til clienten
  fso.copyfile sti1, sti2
  Set fso = Nothing

  End If

Det skulle vel ikke være tilfældet at du kunne fortælle mig hvordan man laver mappe deling via script/kode idet det er noget jeg skal i samme sag.

Hilsen Mickey
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester