file Delete geht nicht

  • ich will eine datei löschen die bei meinem kollegen auf dem pc ist .. der ist in annaberg .. und ich in L.E
    und ich kann und will nicht zu ihm rausfahren und wegen der kleinen datei.

    nun will ich ihm was schreiben damit autoit das macht weil er mit pc´s null ahnung hat...

    hier ein code.:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 451, 193, 125)
    $Pic1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Administrator\Desktop\Neuer Ordner\micha16211.jpg", 32, 24, 577, 377, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    FileDelete ("C:\Programme\allfox")
    MsgBox(4," Hilfe ","so jetzt ist die allfox weg..nur noch einen neustart dann geht wieder alles..")
    Shutdown(4)

    [/autoit]

    die allfox ist eine versteckte und schreibgeschüzte datei..

  • Ok, wie ichs mir gedacht hab.

    allfox ist eine datei, also kein Ordner.
    Also muss allfox eine dateiendung haben, z.B. *.exe ...

    Auserdem sollte die datei NICHT schreibgeschützt sein.

    geh mal in den Ordner wo die Datei liegt. (C:\Programme)
    Dann machst du einen Rechtsklick auf die Datei.
    Nun öffnet sich ein Kontexmenü.
    In diesem Kontexmenü steht unten "Eigenschaften".
    Da klickst du drauf.

    Nun öffnetsich ein Fenster.
    Darin kann man im unteren drittel schonmal den schreibschutz deaktievieren.
    Dann steht im oberen drittel der Dateityp.
    Denn so wie du es angegeben hast, ist allfox nur ein ordner, aber es ist ja eine datei, also hat sie auch ne dateiendung ^^


    PS: wandel das Bild mal in ein *.bmp um, das verträgt sich besser mit autoit ^^


    PPS: Mal so ne Frage nebenbei:
    Warum rufst du ihn eigl. net einfach an, und erklärst es ihm so über telefon? ;)

    Einmal editiert, zuletzt von Commander21 (26. März 2009 um 14:18)

  • kann das denn überhaupt klappen? weil die aufforderung steht doch nach der while schleife.. aba die while schleife wird ja nicht beendet oda..?
    is vll ne blöde frage..:P

  • lol, hast ja recht, garnet drauf geachtet eben.

    Aber ich finde, man kann ja auch einfach mal anrufen, sagen, geh in den ordner: C:\Programme
    Such die datei allfox. mach nen rechtsklick daruf und geh auf "Löschen".

    Und schon is die datei weg :rofl:

  • Ah super.

    Und doch hat sie ^^

    Systemdateien aben die endung *.sys

    Es müsste also heisen: allfox.sys


    Allerdings wäre ich vorsichtig mit Systemdateien.
    Wenn man da etwas falsches löscht, kann es zu heftigen problemen kommen.

    Hab z.B. mal ausversehen ne Datei aus System32 ordner gelöscht, danach musste ich windows neu installiern :rofl:

  • So, versuchs mal damit:

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 481, 193, 125)
    $Pic1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Administrator\Desktop\Neuer Ordner\micha16211.jpg", 32, 24, 577, 377, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Button = GUICtrlCreateButton ("Löschen", 10, 460, 100, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    MsgBox (0, "", 'Bitte klicke auf "Löschen"')
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button
    If FileExists ("C:\Programme\allfox.sys") Then
    If MsgBox (4+48, "", "Willst du die datei jetzt löschen?") = 6 Then
    FileDelete ("C:\Programme\allfox.sys")
    MsgBox(0, " Fertig", "So jetzt ist die allfox-Datei weg. Nur noch einen Neustart dann geht wieder alles.")
    Shutdown(4)
    EndIf
    Else
    MsgBox (64, "Error", "Es wurde keine Datei gefunden!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Also, sorry für halb-OT, aber:
    @Commander21: 1.) Es kann auch Dateien ohne Dateiendung geben, auch wenn das hier keine ist.
    2.) Wie jedes Systemsteuerungsmodul leiße sich auch das Eigenschaften von <Datei> mit AutoIt ausführen, das ist ein rundll32.exe ???-Befehl, den ich jetzt nicht auswendig weiß
    BTT:
    Falls der Schreibschutz das Problem sein sollte, guck dir mal

    [autoit]

    Attrib

    [/autoit]

    an.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ok, hab ich, versteh auch jetz was du damit meinst. nämlich: FileSetAttrib.

    So müsste es demnach dann aber gehn ^^

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 481, 193, 125)
    $Pic1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Administrator\Desktop\Neuer Ordner\micha16211.jpg", 32, 24, 577, 377, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Button = GUICtrlCreateButton ("Löschen", 10, 460, 100, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    MsgBox (0, "", 'Bitte klicke auf "Löschen"')
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button
    If FileExists ("C:\Programme\allfox.sys") Then
    If MsgBox (4+48, "", "Willst du die datei jetzt löschen?") = 6 Then
    FileSetAttrib ("C:\Programme\allfox.sys", "-RH")
    FileDelete ("C:\Programme\allfox")
    MsgBox(0, " Fertig", "So jetzt ist die allfox-Datei weg. Nur noch einen Neustart dann geht wieder alles.")
    Shutdown(4)
    EndIf
    Else
    MsgBox (64, "Error", "Es wurde keine Datei gefunden!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    PS @L3viathan2142:
    Wie meinsten das mt dateien ohne Dateiendung?
    Hab davon noch nie was gehöhrt, welche datei wären denn das z.B.?

    Einmal editiert, zuletzt von Commander21 (26. März 2009 um 14:51)

    • Offizieller Beitrag

    Die Datei ist sicher schreibgeschützt. Also setze das Attribut mit FileSetAttrib() auf '-R'.
    Es kann sein, dass die Datei auch andere, den Löschvorgang unterbindende, Flags hat (SH).
    Laß dir am Besten alle Attribute zurückgeben und setze die störenden zurück.
    z.B. so:

    [autoit]

    $file = 'Dateipfad'
    $attrib = StringSplit(FileGetAttrib($file), '')
    $stringSet = '-'
    For $i = 1 To UBound($attrib) -1
    Switch $attrib[$i]
    Case 'R'
    $stringSet &= 'R'
    Case 'H'
    $stringSet &= 'H'
    Case 'S'
    $stringSet &= 'S'
    EndSwitch
    Next
    FileSetAttrib($file, $stringSet)
    FileDelete($file)

    [/autoit]
    • Offizieller Beitrag

    BugFix :
    Vom prinzib her is dein script aber i.wie gleich mit dem was ich als letztes gepostet hab, oder ^^


    Jo, aber als ich geschrieben habe, war deine Antwort noch nicht da :D - erst nach dem Posten - hab halt zu langsam geschrieben ;)