/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Udskrive til DOS prompt istedet for popup ~
Fra : Anders Jensen


Dato : 11-04-05 14:55

Jeg har følgende kode i min "myfile.vbs":

dim day
day = datepart("w", now())
select case day
case 1
wscript.echo "sunday"
case 2
wscript.echo "monday"
case 3
wscript.echo "tuesday"
case 4
wscript.echo "wednesday"
case 5
wscript.echo "thursday"
case 6
wscript.echo "friday"
case 7
wscript.echo "saturday"
end select

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`")

 
 
Anders Jensen (11-04-2005)
Kommentar
Fra : Anders Jensen


Dato : 11-04-05 15:53

> 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`")

Mit spørgsmål kan også omformuleres, "hvordan får jeg et output fra et
vbscript over i en variabel i et batch script (batchfile.cmd)?"?

Thomas Bøjstrup Joha~ (11-04-2005)
Kommentar
Fra : Thomas Bøjstrup Joha~


Dato : 11-04-05 20:41


"Anders Jensen" <aj56176258@hotmail.com> skrev i en meddelelse
news:425a819a$0$744$edfadb0f@dread16.news.tele.dk...
> Jeg har følgende kode i min "myfile.vbs":
>
> dim day
> day = datepart("w", now())
> select case day
> case 1
> wscript.echo "sunday"
> case 2
> wscript.echo "monday"
> case 3
> wscript.echo "tuesday"
> case 4
> wscript.echo "wednesday"
> case 5
> wscript.echo "thursday"
> case 6
> wscript.echo "friday"
> case 7
> wscript.echo "saturday"
> end select
>
> 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`")

der findes to "programmer" til at køre vbs filer med !!!!

Windows udgaven "wscript.exe script.vbs" (bruges som standard når du "bare"
køre en vbs file)
Dos udgaven "cscript.exe script.vbs"

så du bruger bare "Cscript.exe myfile.vbs" også kommer output til en dos
prompt


hvis du køre i batch mode skal du bare tilføje "//B" for batch og "//nologo"
for jaaa ingen logo
Cscript.exe myfile.vbs //b //nologo

og ja der skal være to // for at den kan se forskel på parameter til dit
script eller cscript.exe

--

Mvh
Thomas Bøjstrup Johansen

--------------------------------------------------------------------
www.swug.dk - Sjælland Windows User Group



Anders Jensen (12-04-2005)
Kommentar
Fra : Anders Jensen


Dato : 12-04-05 09:38

>>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`")
>
> Cscript.exe myfile.vbs //b //nologo

Mange tak - det var jeg ikke klar over. Jeg har forsøgt lidt af hvert,
men har uden held kunne få resultatet ind i en DOS variabel. Nu får jeg
dog fint outputtet ud i en DOS prompt, så tak for det (det hjalp da
lidt). Man kan tilsyneladende ikke bare køre en:

mybatchfile.cmd:
@echo off
set myvar=`cscript myfile.vbs //b //nologo`
echo %myvar%

Det kommer der i hvert fald ikke et rigtigt resultat ud af. Jeg har
fundet et sted, hvor man kan udlæse outputtet fra en VBS og til en fil
og så derefter med en FOR løkke, indlæse resultatet i en DOS variabel,
men det lyder noget omstændigt.

Kan man ikke få resultatet af ovenstående kørsel ind i en DOS variabel?

Thomas Bøjstrup Joha~ (12-04-2005)
Kommentar
Fra : Thomas Bøjstrup Joha~


Dato : 12-04-05 20:00

> mybatchfile.cmd:
> @echo off
> set myvar=`cscript myfile.vbs //b //nologo`
> echo %myvar%

prøve at bruge en pipe

sådan her "echo | %myvar%" eller også er det vist "%myvar% | Echo"

>
> Det kommer der i hvert fald ikke et rigtigt resultat ud af. Jeg har fundet
> et sted, hvor man kan udlæse outputtet fra en VBS og til en fil og så
> derefter med en FOR løkke, indlæse resultatet i en DOS variabel, men det
> lyder noget omstændigt.
>
> Kan man ikke få resultatet af ovenstående kørsel ind i en DOS variabel?

jooo men...

en måde er at lade vbs script skrive en bat file som sætter DOS variabel
også køre bat filen til siste..


mener dog også der er en anden smart måde inde fra vbs, men kan ikke lige
huske det


Thomas



Anders Jensen (14-04-2005)
Kommentar
Fra : Anders Jensen


Dato : 14-04-05 08:53

>>mybatchfile.cmd:
>>@echo off
>>set myvar=`cscript myfile.vbs //b //nologo`
>>echo %myvar%
>
> prøve at bruge en pipe
> sådan her "echo | %myvar%" eller også er det vist "%myvar% | Echo"

Problemet er ikke at udskrive %myvar% værdien - det virker fint med
"echo %myvar%" - problemet er, at variablen ikke indeholder outputtet
fra mit VBS script, hvilket får mig til at spørge igen om:

>>Kan man ikke få resultatet af ovenstående kørsel ind i en DOS variabel?

> en måde er at lade vbs script skrive en bat file som sætter DOS variabel
> også køre bat filen til siste..

Det kan jeg godt se, men så kan man ligeså godt programmere det hele i
VBS og det kender jeg ikke så meget til.

Tomas Christiansen (14-04-2005)
Kommentar
Fra : Tomas Christiansen


Dato : 14-04-05 11:22

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

Anders Jensen (14-04-2005)
Kommentar
Fra : Anders Jensen


Dato : 14-04-05 12:27

> 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.

Ahhh, okay. Jeg har nemlig prøvet med StdOut men fik samme fejl og jeg
var så ikke klar over, at hvis man kaldte med cscript, at man så rent
faktisk fik noget godt ud af det.

> Håber det var det du skulle bruge.

Mange tak - det var et meget brugbart svar, tak.

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste