script works under 98, not under win2k 
Author Message
 script works under 98, not under win2k

The following script does work with windows 98, but does not with windows
2000. The error message says:

script: D:\etcetera
Line: 109
Char: 5
Error: Type mismatch: 'CDate'
Code: 800A000D
Source: Microsoft VBScript runtime error

Script (sorry, comment is in Dutch), line 105 is marked. Any help would be
very appreciated.

----------------------------------------------------------------------------
-----

REM BackItUp.VBS (c) c't/Tobias Weltner

set fs = CreateObject("Scripting.FileSystemObject")
set WSHShell = CreateObject("WScript.Shell")

vernieuwd = 0
nieuwgekopieerd = 0
uptodate = 0
ontoepasselijk = 0
nieuwemap = 0
probleem = 0

' ---------------------------------------------------------------------
' Syntax: BackItUp bron, doel, extensies, modus
' bron:  map met de originelen
' doel:  map met de back-up-bestanden
' extensies: Lijst met de bestandsextensies die moeten worden
'   opgeslagen.
'   Extensies door puntkomma's scheiden: ";vbs;doc;txt;"
' modus: 1 ook submappen opslaan
'  2 alle bestanden opslaan
'  4 altijd nieuw kopieren
'

BackItUp "C:\PROGRAM FILES\HNWIN\DATA", "E:\BACKUP\HNWIN\W2KDATA", "", 1+2
BackItUp "C:\MIJN DOCUMENTEN", "E:\BACKUP\MIJN DOCUMENTEN", "", 1+2

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

' Statusrapport voor 10 seconden laten zien:
r = nieuwgekopieerd & " bestanden nieuw gekopieerd" + vbCr
r = r &  vernieuwd & " bestanden geactualiseerd" + vbCr
r = r & uptodate & " bestanden waren al actueel" + vbCr
r = r & ontoepasselijk & " bestanden voldeden niet aan de selectiecriteria."
+ vbCr
r = r & probleem & " bestanden konden door fouten niet worden gekopieerd." +
vbCr
r = r & nieuwemap & " nieuwe mappen gemaakt."
WSHShell.Popup r, 10, "Report", vbInformation

sub BackItUp(original, doel, extensies, mode)
 ' "\" aan het einde van de padnaam verwijderen als hij daar zit:
 if right(original,1)="\" then original=left(original, len(original)-1)
 if right(doel,1)="\" then doel=left(doel, len(doel)-1)

 ' Fouten ondervangen:
 if not fs.FolderExists(original) then
  fout = "Bronmap """ & original & """ bestaat niet!"
 end if

 if not fs.FolderExists(doel) then
  fout = "Doelmap """ & doel & """ bestaat niet!"
 end if

 if not fout="" then
  MsgBox fout, vbCritical
  WScript.Quit
 end if

 ' Bronmap opslaan:
 set map = fs.GetFolder(original)
 BackupMap map, original, doel, extensies, mode
end sub

sub BackupMap(folderobj, original, opslag, extensies, mode)
 ' Bestanden in deze map opslaan
 BackupFiles folderobj, original, opslag, extensies, mode

 ' Submappen in deze map opslaan
 ' (recursieve aanroep)
 if (mode and 1) then
  for each submap in folderobj.subfolders
   BackupMap submap, original, opslag, extensies, mode
  next
 end if
end sub

sub BackupFiles(map, original, opslag, extensies, mode)
 ' alle bestanden in deze map laten zien
 for each bestand in map.files
  ' bestandsextensie van het huidige bestand verkrijgen:
  extensie = ";" & lcase(fs.GetExtensionName(bestand.Path)) & ";"

  ' bij mode=2 of passende extensie opslaan:
  if (mode and 2) or (Instr(lcase(extensies), extensie) >0) then
   ' Origineel wanneer voor het laatst veranderd?
   oudeoriginal = bestand.DateLastModified

   ' zit het originele bestand in een submap?
   ' pad van het bestand bepalen:
   bestandpad = bestand.path
   ' bestandnamen uit pad verwijderen:
   bestandpad = left(bestandpad, InstrRev(bestandpad, "\"))
   ' alleen de subdirectory van de originele map overlaten:
   bestandpad = mid(bestandpad, len(original)+1)
   ' opslagmap + evtl. submap:
   opslagmap = opslag + bestandpad

   ' doelbestandnaam:
   doelbestand = opslagmap & bestand.Name
   ' Bestaat al een reservekopie?
   doelbestandexist = fs.FileExists(doelbestand)
   if doelbestandexist then
    ' van wanneer is de reservekopie?
    oudedoel = fs.GetFile(doelbestand).DateLastModified
   else
    oudedoel = CDate("1.1.80")
!Line 105!
    flag = true
   end if

   ' reservekopie is verouderd of mode=4:
   if (oudeoriginal>oudedoel) or (mode and 4) then
    ok = CopyIt(bestand,opslagmap)
    if flag and ok then
     nieuwgekopieerd = nieuwgekopieerd + 1
    elseif ok then
     vernieuwd = vernieuwd + 1
    else
     probleem = probleem + 1
    end if
   else
    uptodate = uptodate + 1
   end if
  else
   ontoepasselijk = ontoepasselijk + 1
  end if
 next
end sub

function CopyIt(filehandle, doelmap)
 ' kopieert het bestand
 on error resume next
 if not fs.FolderExists(doelmap) then
  fs.CreateFolder doelmap
  nieuwemap = nieuwemap + 1
 end if
 doel = doelmap & filehandle.name
 filehandle.copy doel, true
 if err.number=0 then
  CopyIt = true
 else
  CopyIt = false
  err.clear
 end if
end function

----------------------------------------------------------------------------
-------



Fri, 01 Nov 2002 03:00:00 GMT  
 script works under 98, not under win2k
I think it is a problem with date format on the Window 2000 machine.  From the documentation. "CDate recognizes date formats according to the locale setting of your system. The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings."

Try plugging in MsgBox IsDate("1.1.80") just before the CDate line -- I think the result will be False.  You may need to adjust the Regional Settings on the Win2K system, or perhaps modify the script to pass the date as "1/1/80".

--

Bill James
Microsoft MVPDTS

Clean up damage from I-Love-You worm:
http://home.earthlink.net/~wgjames/NoMoreLove.html

?Free Win9x VBScript Utilities?
http://home.earthlink.net/~wgjames/vbspage/

Quote:

> The following script does work with windows 98, but does not with windows
> 2000. The error message says:

> script: D:\etcetera
> Line: 109
> Char: 5
> Error: Type mismatch: 'CDate'
> Code: 800A000D
> Source: Microsoft VBScript runtime error

> Script (sorry, comment is in Dutch), line 105 is marked. Any help would be
> very appreciated.

> ----------------------------------------------------------------------------
> -----

> REM BackItUp.VBS (c) c't/Tobias Weltner

> set fs = CreateObject("Scripting.FileSystemObject")
> set WSHShell = CreateObject("WScript.Shell")

> vernieuwd = 0
> nieuwgekopieerd = 0
> uptodate = 0
> ontoepasselijk = 0
> nieuwemap = 0
> probleem = 0

> ' ---------------------------------------------------------------------
> ' Syntax: BackItUp bron, doel, extensies, modus
> ' bron:  map met de originelen
> ' doel:  map met de back-up-bestanden
> ' extensies: Lijst met de bestandsextensies die moeten worden
> '   opgeslagen.
> '   Extensies door puntkomma's scheiden: ";vbs;doc;txt;"
> ' modus: 1 ook submappen opslaan
> '  2 alle bestanden opslaan
> '  4 altijd nieuw kopieren
> '

> BackItUp "C:\PROGRAM FILES\HNWIN\DATA", "E:\BACKUP\HNWIN\W2KDATA", "", 1+2
> BackItUp "C:\MIJN DOCUMENTEN", "E:\BACKUP\MIJN DOCUMENTEN", "", 1+2

> ' ---------------------------------------------------------------------

> ' Statusrapport voor 10 seconden laten zien:
> r = nieuwgekopieerd & " bestanden nieuw gekopieerd" + vbCr
> r = r &  vernieuwd & " bestanden geactualiseerd" + vbCr
> r = r & uptodate & " bestanden waren al actueel" + vbCr
> r = r & ontoepasselijk & " bestanden voldeden niet aan de selectiecriteria."
> + vbCr
> r = r & probleem & " bestanden konden door fouten niet worden gekopieerd." +
> vbCr
> r = r & nieuwemap & " nieuwe mappen gemaakt."
> WSHShell.Popup r, 10, "Report", vbInformation

> sub BackItUp(original, doel, extensies, mode)
>  ' "\" aan het einde van de padnaam verwijderen als hij daar zit:
>  if right(original,1)="\" then original=left(original, len(original)-1)
>  if right(doel,1)="\" then doel=left(doel, len(doel)-1)

>  ' Fouten ondervangen:
>  if not fs.FolderExists(original) then
>   fout = "Bronmap """ & original & """ bestaat niet!"
>  end if

>  if not fs.FolderExists(doel) then
>   fout = "Doelmap """ & doel & """ bestaat niet!"
>  end if

>  if not fout="" then
>   MsgBox fout, vbCritical
>   WScript.Quit
>  end if

>  ' Bronmap opslaan:
>  set map = fs.GetFolder(original)
>  BackupMap map, original, doel, extensies, mode
> end sub

> sub BackupMap(folderobj, original, opslag, extensies, mode)
>  ' Bestanden in deze map opslaan
>  BackupFiles folderobj, original, opslag, extensies, mode

>  ' Submappen in deze map opslaan
>  ' (recursieve aanroep)
>  if (mode and 1) then
>   for each submap in folderobj.subfolders
>    BackupMap submap, original, opslag, extensies, mode
>   next
>  end if
> end sub

> sub BackupFiles(map, original, opslag, extensies, mode)
>  ' alle bestanden in deze map laten zien
>  for each bestand in map.files
>   ' bestandsextensie van het huidige bestand verkrijgen:
>   extensie = ";" & lcase(fs.GetExtensionName(bestand.Path)) & ";"

>   ' bij mode=2 of passende extensie opslaan:
>   if (mode and 2) or (Instr(lcase(extensies), extensie) >0) then
>    ' Origineel wanneer voor het laatst veranderd?
>    oudeoriginal = bestand.DateLastModified

>    ' zit het originele bestand in een submap?
>    ' pad van het bestand bepalen:
>    bestandpad = bestand.path
>    ' bestandnamen uit pad verwijderen:
>    bestandpad = left(bestandpad, InstrRev(bestandpad, "\"))
>    ' alleen de subdirectory van de originele map overlaten:
>    bestandpad = mid(bestandpad, len(original)+1)
>    ' opslagmap + evtl. submap:
>    opslagmap = opslag + bestandpad

>    ' doelbestandnaam:
>    doelbestand = opslagmap & bestand.Name
>    ' Bestaat al een reservekopie?
>    doelbestandexist = fs.FileExists(doelbestand)
>    if doelbestandexist then
>     ' van wanneer is de reservekopie?
>     oudedoel = fs.GetFile(doelbestand).DateLastModified
>    else
>     oudedoel = CDate("1.1.80")
> !Line 105!
>     flag = true
>    end if

>    ' reservekopie is verouderd of mode=4:
>    if (oudeoriginal>oudedoel) or (mode and 4) then
>     ok = CopyIt(bestand,opslagmap)
>     if flag and ok then
>      nieuwgekopieerd = nieuwgekopieerd + 1
>     elseif ok then
>      vernieuwd = vernieuwd + 1
>     else
>      probleem = probleem + 1
>     end if
>    else
>     uptodate = uptodate + 1
>    end if
>   else
>    ontoepasselijk = ontoepasselijk + 1
>   end if
>  next
> end sub

> function CopyIt(filehandle, doelmap)
>  ' kopieert het bestand
>  on error resume next
>  if not fs.FolderExists(doelmap) then
>   fs.CreateFolder doelmap
>   nieuwemap = nieuwemap + 1
>  end if
>  doel = doelmap & filehandle.name
>  filehandle.copy doel, true
>  if err.number=0 then
>   CopyIt = true
>  else
>   CopyIt = false
>   err.clear
>  end if
> end function

> ----------------------------------------------------------------------------
> -------



Fri, 01 Nov 2002 03:00:00 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. MSWINSCK.OCX ver 6.0.98.16 won't work on Win2K

2. MSCOMM error in Win2k but not 98

3. ExtCreatePen does not work in Windows 2000 but works in Windows 98

4. Works on NT but not win 98

5. Logon Script (.vbs) will not run on 98.

6. access db not working passing from windows 98 to windows Me

7. Win API Call not working in vb.net app distributed to WIn 98

8. QuickBasic not working under WIN-98

9. Default printer fonts for Win '95/98 not working

10. Winsock ActiveX dll works on 95/98, not NT

11. CDONTS.Newmail not working in Win2K

12. win2k resource kit VBS files do not work with WMI or WBEM

 

 
Powered by phpBB® Forum Software