Avatar billede azerty Juniormester
10. maj 2011 - 18:22 Der er 4 kommentarer og
1 løsning

Batchfil med dato (version 2)

I nedenstående spørgsmål fik jeg forleden dag fin vejledning i vbs-filer.

http://www.eksperten.dk/spm/938326#reply_7776202

Tak til claes57 for nedenstående script:

-----

idag = date()
testdag = #6/11/2015#

If DateDiff("d", testdag, idag) < 1 Then
' den næste linje kan droppes
    WScript.Echo ("This date is after " & idag)
    Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("Etprogram.exe")
End If
' slut for denne gang (kan droppes)
WScript.Echo ("Slut")

-----

Når den aktuelle dato er længere fremme end 6/11/2015 (eller hvad man nu vælger at sætte den til), kommer kun "wscript-slut-boksen". Det gør den også, når den aktuelle dato er før 6/11/2015, men det gør ikke så meget, for filen "Etprogram.exe" kører alligevel.

Hvis jeg i scriptet fjerner:

' slut for denne gang (kan droppes)
WScript.Echo ("Slut")

... kommer "wscript-slut-boksen" ikke - hverken når "Etprogram.exe" kører eller ikke kører.

Det er en fordel, når programmet kører. Men en bagdel, når programmet ikke kører. Brugeren får således ikke besked om, at hans program er udløbet.

Så tænker jeg:

Er det muligt at tilføje scriptet en "Run"-funktion mere, som træder i kraft, når den aktuelle dato er over 6/11/2015. Det kunne indeholde "EtAndetProgram.exe", som fortæller brugeren, at han ikke længere kan køre "Etprogram.exe".

Jeg har selvfølgelig siddet og fedtet med det, men jeg har først nu fået øjnene op for vbs og ved ikke en bønne om det.... endnu!

På forhånd tak
Avatar billede claes57 Ekspert
10. maj 2011 - 18:50 #1
du skal du din gode veninde 'Else'


idag = date()
testdag = #6/11/2015#

If DateDiff("d", testdag, idag) < 1 Then
' den næste linje kan droppes
    WScript.Echo ("This date is after " & idag)
    Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("Etprogram.exe")
Else
' ikke kørt (kan droppes)
    WScript.Echo ("Tiden er udløbet... Etprogram kan ikke køres længere")
End If
Avatar billede azerty Juniormester
10. maj 2011 - 19:53 #2
Ja, det er en dejlig dame - hende Else !!

Inspireret af hende (og dig) har jeg "i blinde" lavet flg:

---
idag = date()
testdag = #31/12/2011#

If DateDiff("d", idag, testdag) > 1 Then
    Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("smartboardtavle.exe")

Else
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("nope.exe")

End If
---

Sagen er, at jeg har lavet et lille undervisningsprogram (batchfil kompileret til exe med en del filer i kompilationen), som jeg vil invitere nogle beta-testere til at evaluere. Jeg vil så på et tidpunkt lave en endelig version, og i den forbindelse ønsker jeg, at beta-versionen skal holde op med at virke.

I kompilationen indgår både "EtProgram" (hovedfilen) og "Nope" (udløbsmeddelelse)

Udløbsdatoen er sat til 31/12/2011.

Når jeg kører den kompilerede exefil nu, kører mit hovedprogram, som det skal.

Jeg prøvede for sjov at stille computerens kalender frem til 10. maj 2012. Da jeg efter genstart kørte den kompilerede exefil, kører nu "nope.exe" og fortæller brugeren, at de ikke kan køre (hoved)programmet mere.

Det ser ud til at virke, men jeg ved ikke, om det er den helt rigtige syntaks.

LÆG MÆRKE TIL: Jeg har vendt "større end/mindre end"-tegnet i linje 4.

Det er skægt, det her :-)
Avatar billede claes57 Ekspert
10. maj 2011 - 20:01 #3
du skal rette
If DateDiff("d", idag, testdag) > 1 Then
til
If DateDiff("d", idag, testdag) >= 0 Then
eller trække 1 fra dagen, hvor der udløbes.

<1 skal jo svare til >=0
ellers tabes en dag eller to imellem.
Avatar billede azerty Juniormester
10. maj 2011 - 20:23 #4
Mange tak, claes57. Det er virkelig godt. Og så er du hurtig på tangenterne :-)
Avatar billede claes57 Ekspert
10. maj 2011 - 20:35 #5
jeg har bare en åben pc mens jeg laver mad... og skal jo vente på, at det koger.
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

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