Avatar billede groenaert Novice
03. november 2003 - 12:46 Der er 10 kommentarer og
1 løsning

Hjælp med vb script

Jeg skal have lavet et script som kopierer en mappestruktur. Det sådan at der findes 5 mapper, navngivet mandag, tirsdag, onsdag osv.
Inde i de mapper findes der en fil, hvor scriptet skal finde den nyeste og derefter kopierer hele mappen over på et andet drev. Den fil der skal tjekkes for ligger i en mappe der hedder regnskab og selve filen hedder access.sys.
Drevet mapper ligger i er E:\ og de skal kopieres til S:\
Det skal lige siges at jeg aner ikke en klejne om vb script.
Mon der findes en venlig sjæl, som kan hjælpe med dette?
Avatar billede nmh Nybegynder
03. november 2003 - 14:13 #1
Hvad skal der ske med den fil, som er den nyeste?
Har jeg forstået dig ret, skal alle mapper kopieres over, men i hver mappe er der en nyeste fil, som du på en eller anden måde vil have behandlet specielt.
Avatar billede groenaert Novice
03. november 2003 - 15:48 #2
Hvis f.eks siger det er i mappen tirsdag, at den nyeste fil er, så er det hele stukturen under tirsdagsmappen der skal kopieres over.
Avatar billede nmh Nybegynder
03. november 2003 - 19:49 #3
Og så skal de andre mapper ikke kopieres?
Jeg håber at få set på det tirsdag.
Avatar billede groenaert Novice
03. november 2003 - 21:01 #4
Nej det er kun den mappe hvor access.sys er den nyeste. Alle de andre mapper er ligegyldige i denne sammenhæng.
Avatar billede nmh Nybegynder
04. november 2003 - 22:51 #5
Min adsl-linie har været nede det meste af aftenen, så derfor svarer jeg først nu.
Her er så et vbscript, der gør, det du ønsker.
Den nyeste er her den der sidst er blevet ændret.

dim oFS,oFile, A(5), filnavn, n, i, max, x

A(1)="\mandag"
A(2)="\tirsdag"
A(3)="\onsdag"
A(4)="\torsdag"
A(5)="\fredag"
filnavn="\access.sys"
set oFS=WScript.CreateObject("Scripting.FileSystemObject")

set oFile=oFS.GetFile("E:" & A(1) & filnavn)
max=Cdbl(oFile.DateLastModified)
n=1

for i=2 to 5
  set oFile=oFS.GetFile(A(i) & filnavn)
  x=Cdbl(oFile.DateLastModified)
  if max<x then
    max=x
    n=i
  end if
next

oFS.CopyFolder A(n),"S:" & A(n)
Avatar billede nmh Nybegynder
04. november 2003 - 23:04 #6
Ups: Der indsneg sig et par fejl. Her er den rettede version:

dim oFS,oFile, A(5), filnavn, n, i, max, x

A(1)="\mandag"
A(2)="\tirsdag"
A(3)="\onsdag"
A(4)="\torsdag"
A(5)="\fredag"
filnavn="\access.sys"
set oFS=WScript.CreateObject("Scripting.FileSystemObject")

set oFile=oFS.GetFile("E:" & A(1) & filnavn)
max=Cdbl(oFile.DateLastModified)
n=1

for i=2 to 5
  set oFile=oFS.GetFile("E:" & A(i) & filnavn)
  x=Cdbl(oFile.DateLastModified)
  if max<x then
    max=x
    n=i
  end if
next

oFS.CopyFolder "E:" & A(n),"S:" & A(n)
Avatar billede nmh Nybegynder
05. november 2003 - 08:33 #7
Takker for point.
Jeg går ud fra, du har fået det til at virke, men vend endelg tilbage her, hvis du skal have ændret lidt i scriptet.
Avatar billede groenaert Novice
05. november 2003 - 08:47 #8
Hej
Det virker præcist som det skal. Du har gjort en gråhåret mand lykkelig, med det script. Jeg takker for din hjælp. Point er kun en fattig tak i denne sammenhæng.
Avatar billede nmh Nybegynder
05. november 2003 - 16:10 #9
men det var da rart at høre. :o)
Avatar billede nmh Nybegynder
05. november 2003 - 17:33 #10
En lille forbedring:
Tilføj denne linie som en ekstra linie til allersidst:

MsgBox A(n) & ": Kopieringen er slut."

Så får du at vide, hvornår koperingen er færdig og hvilket katalog, der blev kopieret.
Avatar billede groenaert Novice
05. november 2003 - 17:35 #11
Hej
Jeg bukker og nejer for den lille ekstra tilføjelse. Det er faktisk rigtigt godt. Tusind tak.
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