Mein Problem mit den " Gänsefüßen "

  • Hallo zusammen!

    Seid einigen Tagen komme ich mit AutoIt nicht weiter. Ich möchte nähmlich mit Variablen Arbeiten und das gestaltet sich echt schwer, wenn ich noch Gänsefüße einfügen muss, die lösen Markos auf. Erst gestern wurde mir in der Shoutbox durch Raipi und BugFix geholfen. Es ging darum das ich einen Befehl von AutoIt eintragen lasse. Im Endeffekt hab ich das Problem mit dem Send/Run Befehl gelöst, und nicht per ControlSendText.

    [autoit]

    Send ('Robocopy "' & @TempDir & '\Ordner1\Ordner2" "' & @HomeDrive &'\Ordner1\Ordner2\Ordner3\Ordner4" /MIR')

    [/autoit][autoit]

    Run ('Robocopy "' & @TempDir & '\Ordner1\Ordner2" "' & @HomeDrive &'\Ordner1\Ordner2\Ordner3\Ordner4" /MIR')

    [/autoit]


    Diesen Code hab ich so bekommen, aber jetzt wirds komplizierter. In der Hilfe bin ich nicht fündig geworden, da zu dem Thema nix drinsteht. Ich habe da glaube ich aber auch ein deutliches Verständnisproblem was das angeht.

    Nun muss ich einen RegWert eintragen lassen:


    Zitat

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
    "Der Name"="\"C:\\Ordner1\\Ordner2\\Ordner3\\Ordner4\\Ordner5\\Datei.exe\" -SelfLaunch"

    Dieser muss natürlich angepasst sein, und Laufwerk C sollte auch mal Laufwerk D oder F sein können.

    Ich habe es so versucht:

    [autoit]

    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", "" & @HomeDrive &'\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe" -SelfLaunch')
    und so
    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", '" & '@HomeDrive &'\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe" -SelfLaunch')
    und so
    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", ("{ASC 034}")@HomeDrive & "\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe" & ("{ASC 034}") & "-SelfLaunch")

    [/autoit]


    Und noch in 1000 verschiedenen Variationen. Ich weiss nicht mehr weiter.

    Warum ich das mache ist ganz einfach. Ich habe ein Script geschrieben, das MSConfig aufruft, alle Autostarteinträge rausnimmt und die MSConfig Meldung nach dem Neustart ausschaltet, indem es den Wert aus der Registry löscht. Nun müssen aber einige wichtige Sachen bleiben. Das ist einmal der TrayIcon vom Virenscanner, und ein Servicestart für ein Videoprogramm (Wichtig für Batch Encodierung).

    Mir qualmt der Schädel und ich bekomme das nicht gebacken. Bitte helfen ;(

    Einmal editiert, zuletzt von Sentionline (22. Juli 2010 um 10:08)

  • und wieso dann nciht einfach so:

    [autoit]

    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", @HomeDrive &'\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe" -SelfLaunch')

    [/autoit]

    Auszug aus der hilfe zu dem Marco @HomeDrive:

    Zitat

    Laufwerksbuchstabe des Laufwerkes, welches das Hauptverzeichnis des aktuellen Benutzers beherbergt (Systemlaufwerk %SYSTEMDRIVE% ).

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Weil @HomeDrive innerhalb der Gänsefüße stehen muss. Das ist mein Problem, das sich die Variablen nicht verpacken lassen.

  • Das AutoIt die Variablen setzen soll. Und diese eben innerhalb der Gänsefüße gesetzt werden müssen. Die Lösen sich aber auf. #ERROR#

    • Offizieller Beitrag

    Meinst Du so:

    [autoit]

    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", '"' & @HomeDrive & '\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe -SelfLaunch"')

    [/autoit]


    Wobei ich der Meinung bin, dass der Pfad dort gar nicht in Anführungszeichen stehen muss.
    Das heißt, eigentlich müsste das reichen:

    [autoit]

    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Der Name", "REG_SZ", @HomeDrive & '\Ordner1\Ordner2\Ordner3\Ordner4\Ordner5\Datei.exe -SelfLaunch')

    [/autoit]
  • Es gibt 2 Möglichkeiten:
    1. Du benutzt zum markieren des Strings " und als Anführungszeichen im String ' (oder andersrum)

    [autoit]

    MsgBox(0, "", "Dies ist ein ' Text ' mit Anführungszeichen")
    MsgBox(0, "", 'Dies ist ein " Text " mit Anführungszeichen')

    [/autoit]


    2. Du schreibst das Anführungszeichen 2 mal

    [autoit]

    MsgBox(0, "", "Dies ist ein "" Text "" mit Anführungszeichen")
    MsgBox(0, "", 'Dies ist ein '' Text '' mit Anführungszeichen')

    [/autoit]
  • Oscar, bei dem ersten von dir bekomme ich Error. Bei dem 2. Wird eingetragen:

    Zitat

    C:\Ordner1\Ordner2\Ordner3\Ordner4\Datei.exe -SelfLaunch

    Es soll aber so aussehen:

    Zitat


    "C:\Ordner1\Ordner2\Ordner3\Ordner4\Datei.exe" -SelfLaunch

    Weil -Selflunch getrennt sein muss.

    Ineluki, das geht nicht.

    • Offizieller Beitrag

    Wenn es mit verschiedenen Gänsefüßchen, Makros oder Leerzeichen Probleme gibt, ist es meist am Einfachsten den String außerhalb des Aufrufs in einer Variablen zusammenzubasteln und dann nur die Variable an den Aufruf zu übergeben.

    Bsp.:

    [autoit]

    $sPath = @MyDocumentsDir & '\Testanwendungen Neu\Anwendung.exe "Parameter"'

    [/autoit]
  • Danke Oscar, jetzt gehts! :thumbup:

    So, jetzt wüsste ich gerne warum und wieso das geht. Und welche Funktion ' übernimmt und was ich beachten muss. Wie gesagt, in der Hilfe steht nix darüber.

    Bugfix, ich versteh nur Bahnhof :wacko:

  • Ah, jetzt kapier ich. Im Grunde sind die ' zum isolieren da oder wie seh ich das?

    Danke euch! :thumbup:

  • Dieses Thema könnte man in der Hilfe nachtragen. Ist nicht selten das man sowas benötigt.

    lg

  • Ist sogar in der Hilfe drin, Danke für den Hinweis. Als Anfänger weiss ich naturgemäß nicht sofort das es sich um Zeichenketten handelt, demnach weiss ich nicht wonach ich suchen soll. Ich hatte nur in der Hilfe oder Im Netz gelesen (weiss nicht mehr genau wo), das wenn man einen Satz innerhalb der " mit "" von aussen verdoppeln muss. Das dies nicht mit Variablen bzw. Makros funktioniert, das wird/wurde nicht erwähnt. Das war bisher der größte Stolperstein in AutoIt für mich. Es hat mich Tagelang festgehalten.

    lg

    Einmal editiert, zuletzt von Sentionline (22. Juli 2010 um 11:21)