Programm mit parametern aufrufen ... ?!?

  • Guten Mittag.

    Ich bin noch ein ziemlicher Anfänger in AutoIT, habe mich aber schon durch einige Dinge durchgewuselt.

    Jetzt stehe ich vor einem Problem:

    Ich brauche "nur" diesen Aufruf (über Kommandozeile): "C:\accesschk.exe -d -v C:\ > rechte.txt" --bzw später mit wandelnen Pfaden, aber das sollte dann irrelevant werden. Bei Eingabe in DOS (cmd-line) funktioniert das alles problemlos.
    Jetzt brauche ich das Ganze aber automatisiert um mit der Datei weiter arbeiten zu können!!!!
    Anm: accesschek.exe braucht eine ganze Weile bis es Ergebnisse ausspuckt.

    Ich habe in diesem Forum bereits eine "DosBox" gefunden. Mit "normalen" Befehlen klappt das alles auch, aber mit meinem hier nicht.
    Habe folgende Aufrufe auch schon probiert - alle ohne Erfolg:

    [autoit]


    Run('"' & @ComSpec & '" /c ' & "C:\accesschk.exe -d -v C:\ > rechte.txt",' ', @SW_HIDE)
    RunWait('"' & @ComSpec & '" /c ' & "C:\accesschk.exe -d -v C:\ > rechte.txt",' ', @SW_HIDE)
    $rechte = Run('"' & @ComSpec & '" /c ' & "C:\accesschk.exe -d -v C:\ > rechte.txt",' ', @SW_HIDE)
    $rechte = RunWait('"' & @ComSpec & '" /c ' & "C:\accesschk.exe -d -v C:\ > rechte.txt",' ', @SW_HIDE)

    [/autoit]

    Wenn ich die Ausgabe in einen String zurückbekommen würde, wär das auch irgendwie OK, aber eher unschön....

    Hoffe jemand kann mir helfen und ich hab euch nicht zu sehr verwirrt ..
    Danke,
    Joerdis

    Einmal editiert, zuletzt von Joerdis (18. August 2009 um 16:03)

  • Hi

    probiers mal ohne @ComSpec

    [autoit]

    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit]

    ;Ausgabe in Datei
    $sPfad = "C:\"
    RunWait('C:\accesschk.exe -d -v "' & $sPfad & '" > rechte.txt', ' ', @SW_HIDE)
    MsgBox(0,"", "Fertig")

    [/autoit][autoit][/autoit][autoit]

    ;Ausgabe in Variable
    $sStd = ""
    $hPID = Run('C:\accesschk.exe -d -v "' & $sPfad & '"', ' ', @SW_HIDE, $STDERR_MERGED)
    While 1
    $sStd &= StdoutRead($hPID)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "", $sStd)

    [/autoit]

    Falls das auch nicht funktioniert, dann laß mal das @SW_HIDE weg, dann siehst du, was das Programm gerade macht...

    lgE

  • edit: eukalyptus war schneller :(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Erst mal einganz liebes Danke für den schnellen Tipp!

    Nur leider gehts nicht :(

    Weder mit Variable (die is leer) noch mit Dateiausgabe.

    Habe auch das @SW_HIDE weggelassen. Aber nix gesehen. Hat sich kein DOS-Fenster geöffnet und in der Ausgabe unten im SciTE hat sich auch nix geändert.... Wo könnt ich da was sehen? (wie gesagt, bin totaler NOOB)

    Hat jemand eine Idee, warum?


    *ganz doll hoff*

    Lg
    Joerdis

    PS: Weiß nicht, ob das Relevant ist, aber das accesschek.exe braucht teilweise 1-2min um Ergebnisse anzuzeigen. ...

    • Offizieller Beitrag
    [autoit]

    MsgBox(64, 'Datum', _getDOSOutput('C:\downloads\accesschk.exe -d -v C:\ '))

    [/autoit][autoit][/autoit][autoit]

    Func _getDOSOutput($command)
    Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False)
    If @error Then ExitLoop
    Sleep(10)
    WEnd
    Return $text
    EndFunc ;==>_getDOSOutput

    [/autoit]
  • Hallo, Xenobilogist ...

    Danke, aber die Antwort von dir hab ich schon gesehen und versucht. Aber die Variable bleibt leer...
    Ich versteh nicht warum!

    Mit

    [autoit]

    MsgBox(64, 'Datum', _getDOSOutput('Set '))

    [/autoit]


    Funktioniert es einwandfrei.....

    Was könnte da schief gehen????

    Trotzdem Danke :)

  • Ich benutze: Accesschk v4.23

    Spoiler anzeigen

    Accesschk v4.23 - Reports effective permissions for securable objects
    Copyright (C) 2006-2008 Mark Russinovich
    Sysinternals - https://autoit.de/www.sysinternals.com

    Benötige die Parameter -d (nur das Verzeichnis zeigen)
    und -v (erweiterte Rechte anzeigen)

    Warum genau es so lange dauert weiß ich nicht so genau. Vllt. hat das auch mit unseren Firmenrichtlinien zu tun oder mit der Aufschlüsselung der ActiveDirectory-Gruppen....

    aber über die Konsole hats bisher immer geklappt... *nich versteh* 8|

  • Kannst Du es via ConsoleWrite in eine Textdatei schrieben?
    Wenn ja, dann schreibe es in eine Textdatei und lese es mit AutoIt wieder aus.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Alinas Vorschlag ginge natürlich auch. Frage : Dauert es denn nur mit Autoit so lange, oder auch in der Dosbox?

    Ich bekomme es über AutoIt GAR NICHT gestartet. Da läuft es keine 2 Sekunden. In der Dosbox startet es sofort und "rödelt" eine Weile. Dann spuckt es in Sekundenbruchteilen die Daten aus, bzw. schreibt sie in eine Datei und is fertig. Da stimmen dann auch alle Angaben.

    Zitat

    Kannst Du es via ConsoleWrite in eine Textdatei schrieben?
    Wenn ja, dann schreibe es in eine Textdatei und lese es mit AutoIt wieder aus.

    Tut mir leid. Ich hab keine Ahnung vom ConsoleWriter ... ?(
    Hab grad gegoogelt .. da war nicht viel zu finden und die Examples (ConsoleWrite) is mir mir auch nicht klar, was das machen soll -.-
    Kannst du mir das bitte genauer erklären??

    Danke

    Edit: zu Writer nix gefunden, weil ich nach ConsoleWriter geguckt hab^^ grad Write eingegeben und mehr gesehen. Ich probier mal 'n bissle rum. Danke

    Einmal editiert, zuletzt von Joerdis (18. August 2009 um 15:40)

  • Versuch doch mal eine kleine Abfrage mit Autoit hinzubekommen. Einen Ordner und fertig. Das geht bestimmt und dann mal weiter sehen.

    ?( ?( wie? Ich versuche grade über AutoIt nichts anderes zu tun, als eine Kommandozeile zu starten .... mehr nicht ?( ?(
    Und der Accesschk.exe benötigt bei mir für fast jedes Verzeichnis (, dass ich bisher getestet habe) die selbe Zeit. Egal wie groß, komplex oder klein es ist ....

    Versteh grad nicht genau worauf du hinaus willst .. sry

  • OK, es hat sich erledigt.

    Hab auf deinen letzten Post, Xenobiologist, alles nochmal in eine völlig neue Datei geschrieben und gestartet.

    Und es lief ....!! :thumbup:

    Verstehe nicht warum! *ehrlich nicht weiß - nix anderes geändert!*

    Hab dann sogar die Includes, die ich vorher schon hatte (für andere Parts des Scripts) hinzugefügt .. aber läuft immernoch!


    Ganz dickes Dankeschön an euch alle! Ihr habt mir echt geholfen :thumbup:


    PS: wo kann ich das Problem von "offen" auf "geschlossen" oder so setzen???? *such wie wild und nix find* <- ERLEDIGT^^