# vb-script



## vbs-ueben (23. Juli 2004)

Das Script unten sollte alle Dateien kopieren die älter sind als ein Tag. Das Script läuft durch ohne Fehler aber kopiert mir manchmal nicht alle und manchmal gar keine Dateien!

Hat da jemand ne Idee?

Dim fso, folder

Set fso = CreateObject("scripting.FileSystemObject")
fso.DeleteFile("D:\Backup\Batchprogramm\Save\*.*")
Set folder=fso.GetFolder("D:\Backup\Batchprogramm\Log\")
for each file in folder.Files
    if file.datelastaccessed<=Now()-1 then
fso.CopyFile file.Path, "D:\Backup\Batchprogramm\Save\", False
    end if
next

Danke schon mal im voraus...


----------



## Retlaw (23. Juli 2004)

DateLastAccessed und Now geben ausser dem Datum noch die Uhrzeit auf die Sekunde genau an.
Wenn du also eine Datei Mittags erstellst wird sie vom Programm verschieden behandelt, je nachdem ob du es Vormittags oder Nachmittags startest.


----------



## vbs-ueben (29. Juli 2004)

*Datum auslesen*

Ich habe mein Programm noch ein Bisschen umgeschrieben, aber nun habe ich ein anderes Problem.

Wie lese ich bei einer Datei nur das Datum aus ohne Uhrzeit?
file.DateLastAccessed, file.DateCreated, file.DateLastModified hab ich schon probiert geht aber nicht.


Dim fso, folder

Set fso = CreateObject("scripting.FileSystemObject")

Set folder = fso.GetFolder("D:\Backup\Batchprogramm\Log\")

for each file in folder.Files
	if file.DateLastAccessed = DateAdd("d",-1,date) then
		fso.CopyFile file.Path, "D:\Backup\Batchprogramm\Save\"
	end if
next


Dass es bei file.DateCreated, file.DateLastModified nicht geht verstehe ich denn DateAdd ist ohne Zeit und file.DateCreated, file.DateLastModified nimmt die Zeit auch und es ergib nicht den gleichen Wert!
Aber wieso geht file.DateLastAccessed nicht denn dort nimmt es die Zeit nicht mit!

Hat da jemand ne Antwort?
Vielen Dank


----------



## Retlaw (30. Juli 2004)

DateCreated, DateLastAccessed und DateLastModified geben bei mir Datum _und_ Uhrzeit zurück.
Anstatt "=" solltest du "<" bzw. ">" verwenden.

Hab mal ein Beispiel geschrieben bei dem nur das Datum verglichen wird.
Je nachdem ob du die Dateien von gestern, vorgestern, etc. haben willst musst du noch die gewünschte Anzahl an Tagen von myDate abziehen.

```
src    = "D:\test\test1"
dest   = "D:\test\test2"
myDate = date

set fso = createObject("Scripting.FileSystemObject")

set dir = fso.getFolder(src)

for each file in dir.Files
  if compareDates(file.DateCreated,myDate) then
    file.copy dest
  end if
next

msgbox "Fertig!"

function compareDates(date1,date2)
  if date1 >= date2 then
    compareDates = false
    exit function
  end if

  if DatePart("yyyy",date1) < DatePart("yyyy",date2) then
    compareDates = true
    exit function
  else
    if DatePart("m",date1) < DatePart("m",date2) then
      compareDates = true
      exit function
    else
      if DatePart("d",date1) < DatePart("d",date2) then
        compareDates = true
        exit function
      else
        compareDates = false
      end if
    end if
  end if
end function
```


----------



## vbs-ueben (30. Juli 2004)

*Datum auslesen*

Vielen Dank für deine Antwort.

Ich habe das Programm ausprobiert doch leider kopiert es keine Dateien.
Leider konnte ich den Fehler nicht finden, kannst du mir da nochmals helfen?

Ich habe oben ein Tag zurückgestellt:
myDate = DateAdd("d",-1,date)


----------



## aquasonic (30. Juli 2004)

Soweit ich jetzt verstanden habe setzt du neu in myDate das Datum von gestern, was meiner Meinung falsch wäre...Es muss das Datum von heute sein!


----------



## vbs-ueben (2. August 2004)

*DatePart*

Hallo zusammen,

Hab noch mal ne Frage.
Ich möchte von einem Datum Tag, Monat und Jahr auslesen.
Eines davon geht, aber ich sollte doch auch Tag und zB. Monat können oder?

DatePart("d", date)  Gibt mir den Tag.
Aber DatePart("d", "m", date) gibt eine Fehlermeldung.

Weiss da jemand Rat
Merci...


----------



## Retlaw (2. August 2004)

Tag und Monat zusammen hab ich bisher immer so gelöst da DatePart nur einen Parameter verarbeiten kann:

```
HeuteIstDer = DatePart("d", date) & "." & DatePart("m", date) & "." & DatePart("yyyy",date)
```
Also die Informationen einzeln abfragen und zusammenhängen.
Aber stimmt schon, eine gute Funktion sollte eigentlich auch mehrere Parameter unterstützen.

Hab mein Skript oben übrigens getestet, wenn du die Variable myDate richtig setzt funktioniert das.


----------



## vbs-ueben (2. August 2004)

*Danke*

Das war ein guter Tipp die DatePart Parameter zusammenzufügen jetzt gehts. 
Vielen Dank!


----------

