Toon posts:

[vb]services starten aan de hand van inhoud textfile

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben dus aan het proberen om voor een }:O een script te schrijven wat als de ene WU klaar is de andere te starten, ik kom hier alleen totaal niet aan uit. Ik heb dus een aantal dingen zo gekopieerd van MSDN (OpenFile onder andere) en zelfs die werken niet dus vandaar even mijn vraag hier. Ik heb een lusje wat controleert of een bepaalde string voorkomt in de logfile. Als die string voorkomt (komt erin te staan als de unit klaar is) dan moet hij een service starten en eventueel de vorige stoppen. Zelf ben ik tot dit gekomen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
set WshShell = WScript.CreateObject("WScript.Shell")
wshshell.run "sc.exe \\deskkip start FAH@D:+vouwen+folding@home1+fah502-console.exe", 3, False 
do
    FileOpen(1, "D:\vouwen\folding@home1\fahlog.txt", OpenMode.Input)
    While Not EOF(1)   
        TextLine = LineInput(1)
        x = InStr(1, Textline, "Finished Work Unit", 1)
        If x > 0 then 
            check = true
        End If
    End While
    FileClose(1)
    WshShell.run "sleep 60", 3, False
Loop Until Check = true


Bij fileopen gaat het dus al fout, terwijl dit rechtstreeks van MSDN komt. Ik mag blijkbaar niet " " gebruiken. Met sc.exe start ik een service voor de duidelijkheid.

edit:
ik beschik niet over een vb editor daar ik normaal java programmeer dus syntax fouten zijn goed denkbaar al krijg ik die niet meer als ik het script run.

[ Voor 10% gewijzigd door Verwijderd op 04-01-2005 16:52 ]


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Welke foutmelding krijg je?

Verwijderd

Is je syntax niet gewoon fout? (Het is toch VB zeg je?)

In VB hoor je toch om een procedureaanroep geen haakjes te zetten?

Verwijderd

Topicstarter
ik krijg de foutmelding dat die "" niet mogen,

ik denk dat het VB is (niet zo thuis in die termen) het is iig zon .vbs file die je in windows kan executen :)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

De foutmelding die ik krijg is:
Cannot use parentheses when calling a Sub

Parentheses zijn haakjes :)
je mag dus geen haakjes gebruiken als je een sub aanroept.

Verwijderd

Topicstarter
zonder haakjes krijg ik de volgende fout:
regel 4 teken 18
) wordt verwacht :/

ik snap er vrij weinig van, dit heb ik zo van MSDN gehaald :)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
do
    FileOpen 1, "D:\vouwen\folding@home1\fahlog.txt", OpenMode.Input
    While Not EOF(1)   
           TextLine = LineInput(1)
        x = InStr(1, Textline, "Finished Work Unit", 1)
        If x > 0 then 
            check = true
        End If
    End While
    FileClose(1)
    WshShell.run "sleep 60", 3, False
Loop Until Check = true

Geeft bij pas weer een error op regel 9 :)

Verwijderd

Topicstarter
ik voer hem gewoon uit met winxp pro ik weet niet waar jij hem mee opent?

Moet ik nog wat andere dingen installeren ofzow

[ Voor 26% gewijzigd door Verwijderd op 04-01-2005 22:45 ]


Verwijderd

Hier een voorbeeldje, pas het een beetje aan en het zou moeten werken:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dim fso, wso, ts, s, check
set fso = CreateObject("Scripting.FileSystemObject")
set Wso = CreateObject("WScript.Shell")
wso.run "calc.exe" 

do while check=false
   set ts = fso.OpenTextFile("c:\test.txt")
   do
      s = ts.ReadLine
      if instr(s, "Finished Work Unit") then
         check = true
         msgbox ("stop")
         exit do
      end if
  loop until ts.AtEndOfStream
  ts.close
  rem sleep 6 seconds
  wscript.sleep 6000
loop 

Verwijderd

volgens mij heb je vb.net code geplakt. je gewone scriptje heeft geen fileopen method (bizar trouwens dat-ie niet aan een object gekoppeld is) en bijgevolg beschouwt hij fileopen als een aanroep naar een onbestaande subroutine, vandaar de foutmelding met de haakjes (wat de syntax is voor een functieaanroep).
je moet dus deze instructies naar geldige vbs code omzetten, dit is een niet getest voorbeeld van wat er tss de do ... loop until zou kunnen komen:
Visual Basic:
1
2
3
4
5
  Set BestandsToegang = CreateObject("Scripting.FileSystemObject")
  Do
    Check = (InStr(BestandsToegang.OpenTextFile("D:\vouwen\folding@home1\fahlog.txt").ReadAll, "Finished Work Unit") > 0)
    WshShell.Run "sleep 60", 3, False
  Loop Until Check


je kan ws ook met de reguliere open "fahlog.Txt" for input as #1 enz. code werken, voorbeeldjes genoeg hier op p&w.

Verwijderd

Topicstarter
gaat testen :)

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 04 januari 2005 @ 23:53:
Hier een voorbeeldje, pas het een beetje aan en het zou moeten werken:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dim fso, wso, ts, s, check
set fso = CreateObject("Scripting.FileSystemObject")
set Wso = CreateObject("WScript.Shell")
wso.run "calc.exe" 

do while check=false
   set ts = fso.OpenTextFile("c:\test.txt")
   do
      s = ts.ReadLine
      if instr(s, "Finished Work Unit") then
         check = true
         msgbox ("stop")
         exit do
      end if
  loop until ts.AtEndOfStream
  ts.close
  rem sleep 6 seconds
  wscript.sleep 6000
loop 
THX, die werkt, alleen nog 1 ding. Het programma stopt nu volgens mij nadat hij de 1e map heeft gestart. Ik ben benieuwd wat er gebeurd als hij klaar is :)

[ Voor 28% gewijzigd door Verwijderd op 05-01-2005 13:02 ]

Pagina: 1