Wie verknüpfe ich die LocalAppData-Variable mi einem Pfad unterhalb davon?

  • Hallo,

    ich konvertiere ein au3-Script zu einer Exe, die ein Verzeichnis inklusive Unterverzeichnissen löscht. Mit absoluter Pfadangabe funktioniert es wunschgemäß, nur die Variable für "C:\Users\testuser\AppData\Local\" kann ich nicht funktionierend umsetzen. Das Script sieht bislang so aus:

    DirRemove("C:\Users\testuser\AppData\Local\TslGame\Saved\Crashes\.",1)

    Kann ich die Variable für $localappdata mit TslGame\Saved\Crashes direkt verknüpfen oder wie mache ich das? So funktioniert es nicht:

    DirRemove(@localappdata & "\TslGame\Saved\Crashes\.",1)

    Muss ich AutoIt evtl. erst einmal die Umgebungsvariablen ermitteln lassen, sprich eine Variable dafür definieren, damit es funktioniert? Danke vorab.


    MfG ibicis

    MfG ibicis

  • Der Fehler hier ist doch recht offensichtlich. Da ist ein "Punkt" am Ende des Pfades, welcher wohl auch die Ursache dafür sein wird, dass der Aufruf scheitert.

  • Das Makro heißt zumindest bei mir: @LocalAppDataDir. also müsste deine Zeile so lauten:

    DirRemove(@LocalAppDataDir & "\TslGame\Saved\Crashes\.",1)

    Du solltest normal auch den Fehler error: undefined macro sehen...

    So ist es. Den Fehler bekam ich bei meinem Herumprobieren, ich probierte viele Varianten aus, traf jedoch die korrekte Syntax nicht. Dein Vorschlag funktioniert, vielen Dank dafür!

    Der Fehler hier ist doch recht offensichtlich. Da ist ein "Punkt" am Ende des Pfades, welcher wohl auch die Ursache dafür sein wird, dass der Aufruf scheitert.

    Ich fand dieses Bsp. bei meiner Suche nach dem Löschen von Ordnern und Sub-Ordnern hier (Vorschlag vom User "/dev/null"): https://www.autoitscript.com/forum/topic/16…#comment-113788

    Einen Fehler gibt es bei der Ausführung nicht, der Befehl funktioniert wie erwünscht. Ich interpretiere den Punkt als Wildcard für "alles darunter", weiß aber nicht wirklich, wofür er steht.

    MfG ibicis

  • Kann ich die Variable für $localappdata mit TslGame\Saved\Crashes direkt verknüpfen oder wie mache ich das? So funktioniert es nicht:

    DirRemove(@localappdata & "\TslGame\Saved\Crashes\.",1)

    Ja, kannst du... aber wenn es nicht funktioniert, dann dürfte das DirRemove darüber auch nicht funktionieren.

    Ich verstehe allerdings nicht, wofür der Punkt hinter Crashes\. gut sein soll... denn ein Verzeichnis, dass als Namen nur einen Punkt hat, kannst du nicht anlegen und somit auch nicht löschen. Entweder der Punkt gehört da nicht hin... oder aber, du willst nur alle Unterverzeichnisse in Crashes\ löschen, die mit einem Punkt anfangen... dass ginge dann z.B. so:

    So kannst du testen, ob die Inhalte der beiden Variablen gleich sind, was sie auch sollten:

    AutoIt
    Local $sDirRemove1 = 'C:\Users\testuser\AppData\Local\TslGame\Saved\Crashes\.'
    Local $sDirRemove2 = @LocalAppDataDir & '\TslGame\Saved\Crashes\.'
    If $sDirRemove1 == $sDirRemove2 Then
        ConsoleWrite('$sDirRemove1 == $sDirRemove2' & @CRLF)
    Else
        ConsoleWrite('$sDirRemove1 <> $sDirRemove2' & @CRLF)
    EndIf

    @LocalAppDataDir ist übrigens keine Variable, sondern ein Makro.

  • Ich fand dieses Bsp. bei meiner Suche nach dem Löschen von Ordnern und Sub-Ordnern hier (Vorschlag vom User "/dev/null"): https://www.autoitscript.com/f…b=comments#comment-113788

    Einen Fehler gibt es bei der Ausführung nicht, der Befehl funktioniert wie erwünscht. Ich interpretiere den Punkt als Wildcard für "alles darunter", weiß aber nicht wirklich, wofür er steht.

    Oh sorry wusste nicht, dass Wildcards bei dirremove möglich sind und im konkreten Fall "nur" alle Unterordner gelöscht werden (sollen). Sah für mich wie ein Flüchtigkeitsfehler aus.

  • Ja das mit den Wildcards ist so eine Sache - die funktionieren öfter als man glaubt - un die Hilfe läßt einen im Stich. Ich mach den Vorschlag nicht nocheinmal das in der Hilfe zu verbessern ... sonst fang ich mir wieder Särtze ein wie ... die Hilfe ist kein ToDo....

    Aber man sollte das mal zusammenfassen. Frei nach dem Motto * wo funktionieren sie - ohne Hinweis in der -Hilfe ...

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Da lese ich Beitrg #6 ohne es zu prüfen ... gr... man sollte nichts einfach übernehmen... ein:

    DirRemove ('F:\*', 1) oder DirRemove ('F:\*.*', 1) löschen nichts --> * funktioniert nicht!

    @chesstieger wobei bei mir auch ein DirRemove ('F:\2\.') nicht wie zu erwarten wäre alles unterhalb von 2 löscht. Sofern man es

    DirRemove ('F:\2\.', 1) schreibt wird 2 und alles alles unterhalb von 2 gelöscht aber das geht ja logischerweise auch ohne Punkt also DirRemove ('F:\2\', 1) ?

    Verstehe ich es falsch?

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Nö, das ist genau richtig. Der Punkt ist einfach nur da, um in einer relativen Pfadangabe den aktuellen Ordner benennen zu können. Stell es dir als "Genau hier" vor. F:\2\. ist nichts anderes als F:\2. Das macht auf den ersten Blick natürlich keinen Sinn. Erst, wenn man darüber nachdenkt, wie man den aktuellen Ordner mit einer relativen Angabe angeben soll. .. heißt dann "Ordner darüber", . heißt "dieser Ordner". Das ist nur nötig, weil eine leere Pfadangabe auch irgendwie missverständlich wäre.

  • chesstiger ,

    angekommen... Danke.

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)