Announcement

Collapse
No announcement yet.

VbScript

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VbScript

    Hallo zusammen,
    ich bin mir nicht sicher ob ich hier mit meiner Frage richtig bin...
    ...aber ich versuchs mal.

    Ich möchte mit VBScript eine Datei starten. Das funktioniert auch

    Code:
    Option Explicit
    Dim fso, ProgPath
    
    Set fso = CreateObject("WScript.Shell")
    ProgPath = fso.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")
    fso.Run """" & ProgPath & "\MoveFile\MapDrive.exe"""""
    wscript.sleep 500
    rem .....
    Die MapDrive.exe ist ein .Net Programm und erstellt im Application.Path ein Logfile.

    Wenn ich wie oben beschrieben nun die Datei starte wird das Logfile nicht im Ordner der Applikation MapDrive erstellt, sondern im Ordner wo die VBScript Datei steht.
    Ich müsste also in dem Aufruf noch so etwas wie "Ausführen in" mitgeben.
    Geht das? Wie...??

    Schon mal Danke für eure Antworten...
    Bin für jeden Tipp dankbar...

  • #2
    Du mußt das aktuelle Arbeitsverzeichnis ändern wenn MapDrive dahinschreibt. Kenne VBScript nicht gut genug was man da aufrufen müßte aber in der Windows API wäre es SetCurrentDirectory.

    Comment


    • #3
      Du mußt das aktuelle Arbeitsverzeichnis ändern wenn MapDrive dahinschreibt
      Wenn ich MapDrive per Doppelklick starte oder wenn eine Verknüpfung in der Autostart liegt und so gestartet wird funktioniert auch alles einwandfrei.
      Nur wenn ich das per VBScript starte wird das LogFile in den falschen Ordner geschrieben.

      aber in der Windows API wäre es SetCurrentDirectory.
      Wie meinst du das? Wo sollte ich SetCurrentDirectory verwenden, in dem Script?

      Comment


      • #4
        Wenn du das per Explorer startest bist du vorher im Explorer in diesen Ordner navigiert. Damit ist der Ordner dann das aktuelle Arbeitsverzeichnis.
        Lagerort der Executable und das aktuelle Arbeitsverzeichnis sind dann ~zufällig~ gleich.
        Starte MapDrive mal aus einer Kommandozeile ohne in den Ordner zu navigieren sondern über den vollständigen Pfad zu MapDrive.
        Die Ausgabe von MapDrive wird dann dahingehen wo gerade das aktuelle Verzeichnis der Kommandozeile ist. Weil das dann auch das aktuelle Verzeichnis der gestarten Anwendung ist.

        Wie meinst du das? Wo sollte ich SetCurrentDirectory verwenden, in dem Script?
        Ja bzw. die äquivalente Methode von VBScript wie die auch immer heißen mag.

        Comment


        • #5
          Starte MapDrive mal aus einer Kommandozeile ohne in den Ordner zu navigieren sondern über den vollständigen Pfad zu MapDrive.
          Das mache ich doch.
          Hiermir schreibe ich das Verzeichnis vom Programmordner in eine Variable
          Code:
           ProgPath = fso.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")
          und hier starte ich MapDrive
          Code:
           fso.Run """" & ProgPath & "\MoveFile\MapDrive.exe"""""
          Hab ich irgend etwas übersehen, wo navigiere ich den zu dem Ordner?

          Comment


          • #6
            Das mache ich doch.
            Wo setzt du das aktuelle Verzeichnis? Du baust nur den Pfad zur Executable zusammen und startest dann die Executable über den Pfad aus irgendeinem Ordner der gerade aktuell ist in deinem Script. Und das ist dann auch für die gestartete Executable der aktuelle Ordner. Wenn du das Script per Doppelclick im Explorer gestartet hast ist der Ordner in dem das Script lag der aktuelle Ordner. Denn wie schon gesagt in dem Fall fällt Ablageort der Anwendung mit dem aktuellen Ordner ~zufällig~ zusammen.

            Versuchen wir es nochmal anders. Du willst scheinbar nicht in das aktuelle Verzeichnis schreiben (das was deine MapDrive Anwendung tut) sondern einfach in den Ordner wo auch die Anwendung liegt. Kannst du die Anwendung umschreiben? Dann benutzte als Ziel für dein Logs direkt den Startordner der Application und nicht einfach das aktuelle Verzeichnis. Dann sparst du dir das vor dem Anwendungstart entsprechend zu setzen.

            Was ist eigentlich Application.Path für ein Ding? Die Property kenne ich nicht. Keine der mir bekannten Application Klassen hat eine Path Property.

            Comment


            • #7
              Ok. ich hatte das mit dem aktuellen Verzeichnis falsch verstanden.
              Habs jetzt aber gelöst:
              Das mit den vielen unterschiedlichen Anführungszeichen ist schon komisch, scheint aber so richtig zu sein..

              Code:
               
              Option Explicit
              Dim fso, ProgPath
              
              Set fso = CreateObject("WScript.Shell")
              ProgPath = fso.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")
              fso.CurrentDirectory = ProgPath & "\MoveFile\"
              fso.Run """" & ProgPath & "\MoveFile\MapDrive.cmd"""""
              Was ist eigentlich Application.Path für ein Ding?
              Das sollte Application.StartUpPath heissen...

              Aber so wie oben beschrieben funktionierts jetzt....
              Danke

              Comment

              Working...
              X