Avatar billede Slettet bruger
09. maj 2008 - 18:39 Der er 1 kommentar og
1 løsning

Miljøvariabler og stier med mellemrum?

Hej.

Jeg oplever et lidt mærkeligt problem med et lille script (en del af et lidt større script), som skal tjekke om en process kører lokalt på en maskine.
Jeg tjekker forskellige ting med hensyn til om processen kører og hvis den ikke gør dette skal den jo startes via .exe filen.

.exe filen er placeret i C:\Program Files\Mappe\Mappe\filnavn.exe, eller i C:\Programmer\Mappe\Mappe\filnavn.exe hvis der er tale om et dansk OS.
Den del af scriptet, der fejler ser således ud:

MsgBox StartAvgCC()

' ************************************************************************
' StartAvgCC() - Starter AvgCC.exe
' ************************************************************************
Function StartAvgCC()
    On Error Resume Next
    Dim objFSO, filePath, objShell, bolSuccess
    Set objFSO = CreateObject("Scripting.FileSystemObject")
   
    filePath = "%PROGRAMFILES%\Grisoft\AVG7\avgcc.exe"
   
    MsgBox filePath
   
    If objFSO.FileExists(filePath) Then
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run(filePath), 0, True
        Set objShell = Nothing
       
        If Err <> 0 Then
            bolSuccess = False
        Else
            bolSuccess = True
        End If
    End If
   
    StartAvgCC = bolSuccess
End Function

Scriptet fejler i en større sammenhæng og melder at stien til filen ikke eksisterer.
Hvis jeg benytter filePath = "C:\Windows\Notepad.exe" åbnes Notepad uden problemer.

Jeg har også forsøgt at placere andre filer i den givne mappe under \Program Files\, men lige lidt hjælper det.
Har også prøvet med den absolutte sti filePath = "C:\Program Files\Mappew\Mappe\filnavn.exe", men det giver samme fejl.

Er det fordi der er mellemrum i \Program Files\?
Benytter jeg miljøvariabler forkert i mit script?

Det virker som sagt fint med absolutte stier, hvis jeg ikke forsøger med \Program Files\ mappen, eller undermapper i denne mappe.

Enhver ledetråd vil blive modtaget med kyshånd!
Avatar billede Slettet bruger
14. maj 2008 - 11:16 #1
Det sjove er, at hvis jeg flytter selve verificeringen på om filen eksisterer - altså hvis jeg fx. siger If Not objFSO.FileExists(filePath) Then, eller helt fjerner denne validering, så virker det fint.

Hvorfor scriptet så vælger at køre en fil efter at det har valideret at den ikke eksisterer vides ikke.

Men jeg lukker i hvert fald tråden.
Avatar billede morten_leth Nybegynder
23. maj 2008 - 13:50 #2
call objShell.Run(filePath, 0, True)

Du kunne prøve at lave linjen om til det her i stedet, og se hvad det giver....

Eller
objShell.Run(filePath, 0, True)

(jeg kan ikke helt huske om den brokker sig og siger der ikke må være parantes i subs, derfor den call... så hvis den nederste ikke fungere så fungere den øverste i hvert fald...

Som sådan burde dit script fungere...
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
Kategori
Kurser inden for grundlæggende programmering

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