Anders Jensen skrev:
> Jeg har følgende kode i min "myfile.vbs":
> select case day
> case 1
> wscript.echo "sunday"
....
> Når jeg køre filen fra en DOS prompt, så får jeg resultatet (f.eks.
> "monday") op i et popup vindue. Det er ikke særligt smart, hvis jeg vil
> have læst værdien ind i en variabel, som jeg køre fra en batchfil,
> (f.eks. "set daytoday=`c:\myfile.vbs`")
Problemet med at lægge værdien i en såkald "environment variabel" inde
fra dit vb-script er, at der findes flere forskellige sæt af slagsen
(system, user, volatile og process), men ingen af dem passer rigtigt til
dit behov. Ingen af dem giver mulighed for umiddelbart at aflæse værdien
direkte fra en bat-fil (det er muligt via nogle omveje, som jeg gerne vil
uddybe, hvis du ønsker det).
Det du derimod kan gøre er at skrive svaret i stdout (som normalt vises
på skærmen, når man kører i en "Command Prompt"), og derefter kan du
indlæse og behandle det med For-kommandoen i en batch-fil.
Eksempel:
Opret en batch-fil ved nan Idag.cmd (eller Idag.bat) med dette indhold:
@Echo off
For /F %%d in ('CScript DagNavn.vbs') Do Set Idag=%%d
Echo %Idag%
Opret derefter en vb-script fil DagNavn.vbs med følgende indhold:
Option Explicit
Dim Idag
Select Case DatePart("w", Now)
Case vbSunday: Idag = "søndag"
Case vbMonday: Idag = "mandag"
Case vbTuesday: Idag = "tirsdag"
Case vbWednesday: Idag = "onsdag"
Case vbThursday: Idag = "torsdag"
Case vbFriday: Idag = "fredag"
Case vbSaturday: Idag = "lørdag"
Case Else: Idag = "(Ukendt)"
End Select
WScript.StdOut.WriteLine Idag
Bemærk at det kun giver mening at skrive til stdout hvis et program kører
som en såkaldt "Console Application" (hvilket VB som standard ikke kan,
men VB-script kan godt). Der er _ikke_ defineret stdin, stdout eller
errout for Windows applikationer.
Det har den betydning for dig, at du kun at køre DagNavn.vbs via CScript
kommandoen. Hvis du prøver at køre DagNavn.vbs "direkte" eller explicit
via WScript kommandoen, stopper scriptet med en fejl, når det forsøger at
skrive til stdout.
Håber det var det du skulle bruge.
Det var iøvrigt ikke så svært at finde syntaks osv, men jeg vidste
selvfølgelig også hvad jeg ville gå efter. En googling efter 'vbscript
stdout' gav bl.a. et link til denne side som viser syntaksen for at
skrive til stdout (obs: der findes andre mere besværlige metoder):
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/script56/html/wscondrivingapplications.asp
For at få hjælp til for-kommandoen, gik jeg i en command prompt og skrev:
for /?
-------
Tomas