VBS die zelf de datum bij kan houden.

Status
Niet open voor verdere reacties.

frankie59

Gebruiker
Lid geworden
25 sep 2008
Berichten
154
Goedeavond,
Ik wil met taken planner om de 2 weken een melding laten zien, dat een klant een handeling op zijn computer moet doen.
Als hij dit doet wordt er een programma gestart,:
CODE:
if msgBox("Bericht ICT-Keurmerk: Geachte klant, Het is al weer 14 dagen geleden dat u uw computer opgeschoond heeft. Het is erg belangrijk om dit minimaal 1x per 14 dagen uit te voeren. Zullen we het nu meteen even doen? Met vriendelijke groet, V-LITE Computer service.", vbYesNo, "") = vbYes then
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("C:\Program Files\SUPERAntiSpyware\superantispyware.exe")

else
msgbox "Oke, geen probleem. Doe het dan binnen enkele dagen. Ik geeft u over 14 dagen weer een herinnering, fijne dag. Met vriendelijke groet, V-LITE Computer Service."
end if
---------------
Nu wil ik graag dat na 6 maanden een bericht verschijnt dat de klant de computer moet brengen voor een servicebeurt.
code:
if msgBox("Geachte klant: uw ICT-Keurmerk is verlopen, wilt u dit nog gebruiken?", vbYesNo, "") = vbYes then
msgbox "Neem contact op met V-LITE Computer Service om uw computer weer up to date te maken. Telefoon 0411-616591 of email: info@v-lite.nl"
else
msgbox "Jammer dat uw ons gaat verlaten."
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")

objShell.Run "ict3.vbs"

' Using Set is mandatory
Set objShell = Nothing
end if
-----------------
Als een klant niet verder wil dan kies hij voor Nee, en wordt ict3.vbs uitgevoerd. Hierbij wordt een dir. gewist.
code:
Const strPath = "c:\ictkeurmerk"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

Call Search (strPath)

' Comment out below line if you'd like to use this script in windows schedule task
WScript.Echo"Het ICT-Keurmerk is van uw systeem verwijderd en niet meer geldig. Wilt u alsnog het ICT-keurmerk op uw computer of laptop, neem dan contact op met V-LITE Computer Service. Telefoon 0411-616591"

Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files

' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() -1) Then
objFile.Delete(True)
End If

Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)

' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete(True)
End If

Next
End Sub
-------------------------
Dit werkt goed, maar het problem waar ik tegenaan loop is dat hij gaat kijken naar de createdatum die is altijd hetzelfde.
Ik zou willen dat er een datum weggeschreven gaat worden. De datum dat de vbs-bestanden op de computer geplaatst worden.
Dan zou ik met deze datum kunnen werken en aangeven na 150 dagen dat de licentie verloopt en na 180 dagen de melding dat de licentie verlopen is en dat dan het programma verwijderd wordt.

Een flink verhaal, maar met de code erbij is het verhaal wat duidelijker.
Kan ik dat doen in VBS script en dan de grote vraag hoe?

Wie kan en wil mij helpen.

Alvast bedankt,

MVG Frank
 
Zet eerst je code even in code tags want zo is het geen lezen.
Maar waarom zet je die datum niet in een eigen bestandje, of in het register?
 
Laatst bewerkt:
vos die zelf de datum bij kan houden.

Bedankt Edmoor voor je snelle reactie,
Sinds gistermorgen wist ik nog niet van het bestaan van VBS.
Dus weet niet zo goed wat je bedoeld met code tags.

Je moet het zien dat wij laptops verkopen ende klant dient om de 2 weken zijn pc te schonen met een programma.Hiervan moet hij een melding krijgen.
Dit gaat met de volgende code:
------------------------
if msgBox("Bericht ICT-Keurmerk: Geachte klant, Het is al weer 14 dagen geleden dat u uw computer opgeschoond heeft. Het is erg belangrijk om dit minimaal 1x per 14 dagen uit te voeren. Zullen we het nu meteen even doen? Met vriendelijke groet, V-LITE Computer service.", vbYesNo, "") = vbYes then
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("C:\Program Files\SUPERAntiSpyware\superantispyware.exe")

else
msgbox "Oke, geen probleem. Doe het dan binnen enkele dagen. Ik geeft u over 14 dagen weer een herinnering, fijne dag. Met vriendelijke groet, V-LITE Computer Service."
end if
--------------------------

Dan moet er na 5 maanden een melding erbij komen dat de beveiliging gaat vervallen:
Dit gaat met de volgende code:
--------------------------
if msgBox("Geachte klant: uw ICT-Keurmerk is verlopen, wilt u dit nog gebruiken?", vbYesNo, "") = vbYes then
msgbox "Neem contact op met V-LITE Computer Service om uw computer weer up to date te maken. Telefoon 0411-616591 of email: info@v-lite.nl"
else
msgbox "Jammer dat uw ons gaat verlaten."
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")

objShell.Run "ict3.vbs"

' Using Set is mandatory
Set objShell = Nothing
end if
-------------------------

En uiteindelijk zal de klant bellen voor een afspraak of kiezen voor nee en dan moeten de VBS bestanden verwijderd worden.

Ik heb dit nu in taakplanning van Windows.

Het probleem is dat de bestanden op ons netwerk staan en die kopiëren we dan naar de laptop. Alleen dan wordt de datum aangehouden wanneer het vis-bestand gemaakt is. en dan werkt het niet.
In het register klinkt ook goed, al zou ik niet weten hoe en ook niet hoe ik erna verwijs in een vsb.
Maar heb ik daar niet hetzelfde probleem.

Mogelijk kan er een txt bestand gemaakt worden met de installatiedatum en dat daarna steeds naar verwezen kan worden.

Ik hoop dat ik het duidelijker gemaakt heb en niet ingewikkelder.

mvg Frank
 
Code tags heeft niks met VBS te maken maar met het plaatsen van code op dit forum. Klik in het menu op het # teken en plak dan je code. Dan staat het tussen codetags. Je vraag begreep ik wel. Mijn vraag blijft gelijk.
 
Laatst bewerkt:
Code:
[CODE]if msgBox("Bericht ICT-Keurmerk: Geachte klant, Het is al weer 14 dagen geleden dat u uw computer opgeschoond heeft. Het is erg belangrijk om dit minimaal 1x per 14 dagen uit te voeren. Zullen we het nu meteen even doen? Met vriendelijke groet, V-LITE Computer service.", vbYesNo, "") = vbYes then
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("C:\Program Files\SUPERAntiSpyware\superantispyware.exe")

else 
msgbox "Oke, geen probleem. Doe het dan binnen enkele dagen. Ik geeft u over 14 dagen weer een herinnering, fijne dag. Met vriendelijke groet, V-LITE Computer Service." 
end if

Nu wil ik graag dat na 6 maanden een bericht verschijnt dat de klant de computer moet brengen voor een servicebeurt.
code:
Code:
if msgBox("Geachte klant: uw ICT-Keurmerk is verlopen, wilt u dit nog gebruiken?", vbYesNo, "") = vbYes then
msgbox "Neem contact op met V-LITE Computer Service om uw computer weer up to date te maken. Telefoon 0411-616591 of email: info@v-lite.nl" 
else 
msgbox "Jammer dat uw ons gaat verlaten." 
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")

objShell.Run "ict3.vbs" 

' Using Set is mandatory
Set objShell = Nothing
end if

Als een klant niet verder wil dan kies hij voor Nee, en wordt ict3.vbs uitgevoerd. Hierbij wordt een dir. gewist.

Code:
Const strPath = "c:\ictkeurmerk"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

Call Search (strPath)

' Comment out below line if you'd like to use this script in windows schedule task
WScript.Echo"Het ICT-Keurmerk is van uw systeem verwijderd en niet meer geldig. Wilt u alsnog het ICT-keurmerk op uw computer of laptop, neem dan contact op met V-LITE Computer Service. Telefoon 0411-616591"

Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files

' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() -1) Then
objFile.Delete(True)
End If

Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)

' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete(True)
End If

Next
End

Zo weer wat geleerd.
 
Wat ik al voorstelde. Schrijf die datum in een bestandje dat je bij controle weer inleest. Of plaats het in een eigen registersleutel.
 
Ja, ok maar dat kost teveel tijd.
Dan moet je steeds de datum in de vbs-code aanpassen of ook in het register.
Wat ik zou willen is dat we de bestanden naar een nieuwe pc kopiëren en dat er een txt-bestandje gemaakt wordt op dat moment met datum van plaatsing.
Zodat daarvan uit gerekend kan worden.
Of is dat wel mogelijk via het register?, maar hoe pak ik dat aan?
 
Laatst bewerkt:
Nee, dat is ook zo, Maar een laptop/computer wordt door medewerkers geïnstalleerd en dat gaat via een vast protocol cq werkwijze hierdoor wordt er zo weinig mogelijk vergeten. Als we de vbs bestanden kopiëren naar de nieuwe computer en het vis bestand moet handmatig aangepast worden dan is de kans op fouten veel te groot en is het om die reden niet te gebruiken.

Voor 1 of enkel laptops was het geen probleem, maar het zijn er veel meer met ongeveer 15 programma' s die er allemaal op moeten.
Dan is standaardisatie noodzakelijk.

Maar ik dacht dat het mogelijk was, maar misschien ook niet binnen VBS.
 
Mogelijk is het misschien om in de image met alle programma' s en instellingen een vbs bestand op het bureaublad te plaatsen. Dan is 1 klik na de installatie voldoende om de wijzigingen in de bestaande VBS bestanden aan te passen en het VBS bestand daarna te verwijderen.

Ik zou dan geholpen zijn met een VBS code die een VBS bestand leest en met de huidige datum "now + 170" aanpast.
Is er zoiets?

Bedankt voor de register informatie links ik zal hier eens naar kijken.
 
Maar er hoeft in de bestanden niets te worden aangepast. Om 1 of andere reden blijf je dat denken. Je schrijft vanuit je VBS gewoon ergens een tekst bestandje met de datum van dat moment. Voor de controle lees je dat bestandje dan weer. Een voorbeeld:
Code:
Set objFSO=CreateObject("Scripting.FileSystemObject")

'Maak het bestand
outFile="C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write Clng(Date)
objFile.Close

'Lees het bestand
strFile = "C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.OpenTextFile(strFile)
strLine= objFile.ReadLine
msgbox "[" & strline & "]"
objFile.Close

De datum wordt daarin overigens als een longword geschreven zodat er makkelijk mee te rekenen is.
 
YES, dat is het!
Bedankt Ed, je hebt me erg geholpen.
Ik ben er erg blij mee.

Fijne avond.
 
Graag gedaan :)
 
Beste Ed,

Ik loop nog tegen een probleempje.
Het maken van de startdatum gaat goed, alleen ik heb geen idee hoe ik hierna moet verwijzen.
De bedoeling is dat 5 maanden na de startdatum de bestanden gewist moet worden.

Dit is het verwijder bestand.

Code:
Const strPath = "c:\ictkeurmerk"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

Call Search (strPath)

' Comment out below line if you'd like to use this script in windows schedule task
WScript.Echo"Het ICT-Keurmerk is van uw systeem verwijderd en niet meer geldig. Wilt u alsnog het ICT-keurmerk op uw computer of laptop, neem dan contact op met V-LITE Computer Service. Telefoon 0411-616591"

Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files

' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() -1) Then
objFile.Delete(True)
End If

Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)

' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete(True)
End If

Next
End Sub
Code:

Dit is wat ik van je gekregen heb.

Code:
outFile="C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write Clng(Date)
objFile.Close
Code:

'Lees het bestand
Code:
strFile = "C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.OpenTextFile(strFile)
strLine= objFile.ReadLine
msgbox "[" & strline & "]"
objFile.Close
Code:

Graag je advies
 
Code:
Const strPath = "c:\ictkeurmerk"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

Call Search (strPath)

' Comment out below line if you'd like to use this script in windows schedule task
WScript.Echo"Het ICT-Keurmerk is van uw systeem verwijderd en niet meer geldig. Wilt u alsnog het ICT-keurmerk op uw computer of laptop, neem dan contact op met V-LITE Computer Service. Telefoon 0411-616591"

Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files

' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() -1) Then
objFile.Delete(True)
End If

Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)

' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete(True)
End If

Next
End Sub

dit kreeg ik van je

Code:
'Maak het bestand
outFile="C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write Clng(Date)
objFile.Close

'Lees het bestand
strFile = "C:\Users\Ed\Desktop\DtChk.dat"
Set objFile = objFSO.OpenTextFile(strFile)
strLine= objFile.ReadLine
msgbox "[" & strline & "]"
objFile.Close
 
Wat je kreeg klopt. Je moet dus bij de sectie 'Lees het bestand niet de Msgbox tonen maar die waarde in een variabele stoppen. Die kan je dan vergelijken met een andere datum.
 
In tekst snap ik dit, maar aangezien ik 2 dagen ervaring heb met vbs weet ik niet hoe dit te doen.

Dit is het verwijder commando:
Code:
' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() -1) Then
objFile.Delete(True)
End If

Ik denk dat ik dan hier iets mee moet, maar ik weet niet wat.

Code:
strFile = "C:\ictkeurmerk\startdatum.dat"
Set objFile = objFSO.OpenTextFile(strFile)
strLine= objFile.ReadLine
msgbox "[" & strline & "]"
objFile.Close

ik kan helaas niet verder komen.
 
Kijk eens naar dit:
Code:
Set objFSO=CreateObject("Scripting.FileSystemObject")
Dim stDatum
strFile = "C:\ictkeurmerk\startdatum.dat"
Set objFile = objFSO.OpenTextFile(strFile)
stDatum = Cdate(objFile.ReadLine)
objFile.Close

Hiermee is de datum uit dat bestand ingelezen in de variabele stDatum.
Die kan je dan vergelijken met de dag van vandaag en bepalen hoe oud die ingelezen datum is.
 
Laatst bewerkt:
Heel erg bedankt, ik ga hiermee aan de slag ik laat het nog even weten.

fijne avond,

MVG Frank
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan