1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. michach

Beiträge von michach

  • Profil auf Server erneuern

    • michach
    • 29. November 2010 um 14:21

    Also das array läuft eigentlich durch, also bis Zeile 111 kommt er, denn er löscht alle Dateien und Ordner inkl. der ntuser.pol und wartet dann auch 2 Sekunden, dann kommt plötzlich der Fehler.

  • Profil auf Server erneuern

    • michach
    • 29. November 2010 um 08:46

    Moin moin nochmal :)

    heute morgen habe ich nochmal das scrippt getestet, und was soll ich sagen, es kommt ein Fehler :(
    Wenn ich das durchlaufen lassen, funktioniert es sehr gut, bis zur Meldung:

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)

    Dann bekomme ich den Fehler:
    Error: Subscript used with non-Array variable

    Irgendwo ist da plötzlich der Wurm drin, habe ich noch etwas übersehen ?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #Include <Array.au3>
    #include <Process.au3>
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\micholys\desktop\profil_neu.kxf
    $Form1_1 = GUICreate("BTC ServiceDesk Tool v0.1", 588, 620, 563, 122)
    $Group1 = GUICtrlCreateGroup(" Info ", 8, 16, 569, 593)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Mit diesem Tool hast du die Möglichkeit durch wenige Klicks schneller und", 32, 48, 519, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Label3 = GUICtrlCreateLabel("einfacher bestimmte Aktionen durchzuführen.", 32, 72, 326, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Profilerneuerung = GUICtrlCreateGroup("Profilerneuerung", 16, 104, 553, 161)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("Für eine Profilerneuerung müssen der Server, der Benutzername und der Hostname", 26, 128, 497, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Benutzername = GUICtrlCreateInput("Benutzername", 232, 176, 113, 24)
    $Hostname = GUICtrlCreateInput("Hostname", 378, 176, 113, 24)
    $Profilserver = GUICtrlCreateInput("Profilserver", 85, 176, 113, 24)
    $Label1 = GUICtrlCreateLabel("eingetragen werden.", 27, 144, 126, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Starten = GUICtrlCreateButton("Starten", 200, 224, 177, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Aufraumen = GUICtrlCreateGroup("Rechner aufräumen", 16, 416, 553, 113)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Hiermit kannst du den Rechner des Anwenders aufräumen, damit er wieder mehr Platz auf", 24, 440, 531, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("seinem Rechner zu verfügung hat.", 24, 456, 204, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Hostnam = GUICtrlCreateInput("Hostname", 120, 488, 113, 24)
    $Starte = GUICtrlCreateButton("Starten", 352, 488, 113, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label7 = GUICtrlCreateLabel("Copyright by Micha Steinke", 432, 584, 133, 17)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    $Group2 = GUICtrlCreateGroup("Lokales Profil", 16, 280, 553, 121)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label8 = GUICtrlCreateLabel("Hier kannst du das Lokale Profil auf dem Rechner löschen, denke aber daran das der", 24, 304, 509, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label9 = GUICtrlCreateLabel("Benutzer abgemeldet sein muß !!!", 24, 320, 201, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Starten", 352, 362, 113, 25, 0)
    $Input1 = GUICtrlCreateInput("Hostname", 120, 362, 113, 24)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    $Button2 = GUICtrlCreateButton("Beenden", 24, 576, 113, 25, 0)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    Exit
    Case $Starten
    _perneuern()
    EndSwitch
    WEnd
    Func _perneuern()

    $Profilserver = GUICtrlRead($Profilserver) ; Rückgabe des Zustandes des Menüpunktes
    $Benutzername = GUICtrlRead($Benutzername) ; Rückgabe des Zustandes des Menüpunktes
    $Hostname = GUICtrlRead($Hostname) ; Rückgabe des Zustandes des Menüpunktes

    $quelle = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil\*"
    $ziel = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$Profilserver, "Benutzer oder Server nicht bekannt!",5)
    Exit
    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$Profilserver, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$Profilserver, "Ordner wurde erfolgreich erstellt, der Kopiervorgang beginnt in wenigen Sekunden.",5)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    $FileList_01 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",1) ;listet Files
    $FileList_02 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",2) ;listet Ordner
    For $x = 1 to $FileList_01[0]
    FileDelete("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    DirRemove("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_02[$x], 1)
    Next
    $sCommand00 = "del /F /S /Q /A \\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    sleep(2000)
    $anfrage = MsgBox(4,"","Möchtest du jetzt das Lokale Profil auf dem Client löschen?")

    If $anfrage = 6 Then
    $sCommand00 = "del /F /S /Q /A \\" & $Hostname & "\Dokumente und Einstellungen\" & $Benutzername
    ;$sCommand01 = "del /F /S /Q /A \\" & $Hostname & "\Dokumente und Einstellungen\vigross"
    _RunDOS ( $sCommand01 )
    MsgBox(0,"","Profil gelöscht.")
    Else
    MsgBox(0,"","Lokales Profil auf dem Host " & $Hostname & "wurde nicht gelöscht.")
    EndIf
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Exit
    EndFunc
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]

    Vielen Dank nochmal für eure Hilfe.

    Edit Oscar: Spoiler gesetzt.

  • Profil auf Server erneuern

    • michach
    • 26. November 2010 um 12:35

    Jaaaaaaaa,

    vielen Dank, das kleine /A ist es gewesen, echt super Arbeit :)

  • Profil auf Server erneuern

    • michach
    • 26. November 2010 um 10:56

    Hier nochmal das Script, Fehlermeldung kommt nicht mehr, das löschen funktioniert soweit sehr gut, nur die verdammte ntuser.pol bekomme ich mit dem Script nicht gelöscht, nur Manuell.
    In den Eigenschaften ist diese als Schreibgeschützt markiert, denke das liegt daran :(


    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #Include <Array.au3>
    #include <Process.au3>
    If Not IsAdmin() Then
    ; Bis Version 3.2.10.0
    ;~ RRunAsSet("", @LogonDomain, "")
    ;~Run(@ScriptFullPath, @ScriptDir, @SW_HIDE)
    ;~ RunAsSet()
    ; AB Version 3.2.12.0
    RunAs("misteink", "EWENET", "Mc087047", 0, @ScriptFullPath, @ScriptDir, @SW_HIDE)
    Exit
    EndIf
    If IsAdmin() Then
    MsgBox(0, "", "Admin-Rechte erkannt.",1)
    EndIf
    Dim $client
    Dim $user
    $client = InputBox("Profil Server", "Gebe hier bitte den Server ein auf dem das Profil des Benutzers hinterlegt ist ( z.B.: HV-NT1 ):")
    $user = InputBox("Benutzer", "Gebe hier bitte den Benutzernamen ( Anmeldenamen ) des betreffenden Users an:")
    $quelle = "\\" & $client & "\config$\" & $user & "\Profil\*"
    $ziel = "\\" & $client & "\config$\" & $user & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$client, "Benutzer oder Server nicht bekannt!",5)
    Exit
    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$client, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$client, "Ordner wurde erfolgreich erstellt, der Kopiervorgang beginnt in wenigen Sekunden.",5)

    ;sleep(1000)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    $FileList_01 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",1) ;listet files
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_01,"$FileList")
    $FileList_02 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",2) ;listet ordner
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_02,"$FileList")
    For $x = 1 to $FileList_01[0]
    ;Msgbox(0,'Record:' & $x, $FileList_01[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    ;Msgbox(0,'Record:' & $x, $FileList_02[$x],1)
    DirRemove("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_02[$x], 1)
    Next
    $sCommand00 = "del /F /S /Q \\" & $client & "\config$\" & $user & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    sleep(2000)
    $anfrage = MsgBox(4,"","Möchtest du jetzt das Lokale Profil auf dem Client " & $client & " löschen?")

    If $anfrage = 6 Then
    MsgBox(0,"","Profil gelöscht.")
    Else
    MsgBox(0,"","Nichts passiert.")
    EndIf
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]

    Vielleicht gibt es wirklich keine Lösung in diesem Fall, Dr. Google konnte mir bis jetzt auch noch nicht helfen, ausser der Link den du mir geschickt hattest, da ist das Problem mit dem schreibschutz beschrieben.

    Edit Oscar: Spoiler gesetzt.

  • Profil auf Server erneuern

    • michach
    • 26. November 2010 um 07:53

    Hi, danke nochmal für den Ansatz, habe den Part jetzt so eingebaut:

    [autoit]

    $FileList_01 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",1) ;listet files
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_01,"$FileList")
    $FileList_02 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",2) ;listet ordner
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_02,"$FileList")
    For $x = 1 to $FileList_01[0]
    ;Msgbox(0,'Record:' & $x, $FileList_01[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    ;Msgbox(0,'Record:' & $x, $FileList_02[$x],1)
    DirRemove("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_02[$x], 1)
    ;Next
    $sCommand00 = "del /F /S /Q \\" & $client & "\config$\" & $user & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    Next

    [/autoit]

    Bekomme jetzt aber eine Fehlermeldung:
    Error: Subscript used with non-Array variable

    Kann es sein das ich bei der $sCommand00 einen Fehler gemacht habe ?

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 14:35

    habe es jetzt nochmal versucht mit DirRemove, es werden alle gelöscht, nur noch die
    ntuser.pol bleibt übrig :(

    Wenn ich die noch gelöscht bekomme, ist der Fall dank eurer Hilfe gelöst :)

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 14:18
    Zitat von gmmg

    bei den ordnern müsstest du "dirdelete" nehmen ...


    Du meinst hier bestimmt DirRemove, oder ?

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 14:12

    jep, per hand geht es, es kommt einmal eine Abfrage ob ich wirklich löschen möchte, dann nochmal eine Meldung das ich bestätigen muß das die Systemdatei "ntuser.pol" gelöscht werden soll, wenn ich da auf "Ja, alle" klicke, dann läuft das ding komplett durch.

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 13:11

    also die Dateien werden angezeigt und gefunden, auch an dem "\" hat es nicht gelegen :(
    Hm... muß wohl weiter forschen, vielen dank aber für die Mühe, hat mich schon sehr weit gebracht.

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 11:21

    OK, ich habe das mal mit deinem Code versucht, so in dieser Form:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #Include <Array.au3>
    Dim $client
    Dim $user
    $client = InputBox("Profil Server", "Gebe hier bitte den Server ein auf dem das Profil des Benutzers hinterlegt ist ( z.B.: HV-NT1 ):")
    $user = InputBox("Benutzer", "Gebe hier bitte den Benutzernamen ( Anmeldenamen ) des betreffenden Users an:")
    $quelle = "\\" & $client & "\config$\" & $user & "\Profil\*"
    $ziel = "\\" & $client & "\config$\" & $user & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$client, "Benutzer oder Server nicht bekannt!",5)

    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$client, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$client, "Ordner wurde erfolgreich erstellt, der Kopiervorgang begind in wenigen Sekunden.",5)

    ;sleep(1000)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    $FileList_01 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher", "*",1) ;listet files
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    _ArrayDisplay($FileList_01,"$FileList")
    $FileList_02 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher", "*",2) ;listet ordner
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    _ArrayDisplay($FileList_02,"$FileList")
    For $x = 1 to $FileList_01[0]
    Msgbox(0,'Record:' & $x, $FileList_01[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    Msgbox(0,'Record:' & $x, $FileList_02[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher" & $FileList_02[$x])
    Next
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]


    Er listet mir zwar die zu löschenden Dateien auf, und starte auch wenn ich diese Auflistung beende, allerdings sind die Dateien immer noch in dem Ordner, ich glaube das geht irgendwie nicht :(
    Irgendwo ist noch ein Fehler, aber ich finde den nicht.

    Edit Oscar: Spoiler gesetzt.

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 10:50

    Jeder Benutzer hat einen Profil Ordner auf dem Server. Wenn jetzt ein Problem besteht, erstellen wir einen neuen Profil Ordner z.Bsp. "Profil.sic" wo wir die Dateien aus dem Profil Ordner in den Profil.sic Ordner kopieren und dann die Daten aus dem Profil Ordner löschen.
    Wen der Benutzer sich neu Anmeldet, werden die Dateien in dem Profil Ordner neu erstellt. Wenn der Anwender sagt das dann soweit alles ok ist, dann kann auch der Ordner "Profil.sic" gelöscht werden, der ist nur zur sicherheit falls etwas schief gehen sollte bei der Profil erneuerung.
    Wenn wir den Ordner "Profil" löschen würden und neu anlegen, verliert der Benutzer die Berechtigung auf den Ordner, diese müssen dann wieder neu angepasst werden.

    ich versuche mal das mit dem Array, wobei ich immer noch nicht verstehe warum das mit dem FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\*.*") nichtz funktioniert, in der Hilfe steht ganz klar das alle Dateien in dem Ordner gelöscht werden :(

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 09:38

    Hi,

    ja, hatte ich oben auch so geschrieben in klammern :)
    Das ist absichtlich, nur zum testen erstmal, später soll auch dem Qell Ordner ( Profil Ordner ) gelöscht werden.

    Die Hilfe hatte ich auch benutzt, da steht:
    Achtung: Wenn der in FileDelete angegebene Pfad ("path") ein Ordner ist, werden alle im Ordner enthaltenen Dateien gelöscht, so als ob die *.*-Maske angegeben wurde.

    ich habe es auch mit *.* versucht, aber ohne Erfolg
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\*.*")

    Ist diese Aussage denn in der Hilfe falsch ?
    Wichtig ist das der Ordner "Profil.sicher" bestehen bleibt und nur in dem die Unterordner und Dateien gelsöcht werden. Wie ich in der Hilfe von DirRemove gelesen habe wird auch der Ordner gelöscht, das darf aber auf keinen Fall, sonst gehen die ganzen Berechtigungen des Benutzers verloren.

  • Profil auf Server erneuern

    • michach
    • 25. November 2010 um 08:20

    Hallo,

    erstmal vielen Dank für eure Hilfe und Tipps, hat mir sehr geholfen. Mein Scrippt funktioniert soweit ganz gut, Ordner wird angelegt und Dateien werden vom Quell Ordner in den Ziel Ordner kopiert, allerdings klappt das mit dem löschen nicht ganz. Es werden zwar Dateien aus dem Quell Ordner ( im Scrippt ein andern Quell Ordner zum Test genommen ) gelöscht, aber nur ein paar, nicht alle. Ordner wie "Anwendungsdaten", "Cookis", "Eigene Dateien" und auch direkte Dateien wie "ntuser.pol" werden nicht gelöscht, normalerweise wäre beim löschen eine Abfrage gekommen wie "Wollen Sie diese Dateien wirklich löschen ?" wo man mit "Ja" bestätigen muß, die kommt aber nicht.

    Hier mein derzeitiges Scrippt:

    Spoiler anzeigen
    [autoit]


    #include <file.au3>
    Dim $client
    Dim $user
    $client = InputBox("Profil Server", "Gebe hier bitte den Server ein auf dem das Profil des Benutzers hinterlegt ist ( z.B.: HV-NT1 ):")
    $user = InputBox("Benutzer", "Gebe hier bitte den Benutzernamen ( Anmeldenamen ) des betreffenden Users an:")
    $quelle = "\\" & $client & "\config$\" & $user & "\Profil\*"
    $ziel = "\\" & $client & "\config$\" & $user & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$client, "Benutzer oder Server nicht bekannt!",5)

    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$client, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$client, "Ordner wurde erfolgreich erstellt, der Kopiervorgang begind in wenigen Sekunden.",5)

    ;sleep(1000)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    If FileExists($ziel) Then
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher")
    MsgBox(0,"","Dateien im Verzeichnis" & $quelle & " wurden gelöscht",5)
    Else
    MsgBox(0,"","Verzeichnis ist nicht vorhanden!",5)
    EndIf
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]


    Edit Oscar: Spoiler gesetzt.

  • Profil auf Server erneuern

    • michach
    • 24. November 2010 um 07:51

    Hallo, vielen Dank für den Ansatz. Habe jetzt folgendes gemacht, das mit dem Admin habe ich erstmal raus genommen, arbeite eh als Domain Admin.
    Von der Quelle soll hier jetzt eine Sicherung des Profils "doduck" erfolgen. Bei dem Script bekomme cih allerdings die Fehlermeldung:

    AutoIt Error:
    Line 399 (test.exe)
    Error: Error in expression.

    Kann es vielleicht an der Quell Angabe liegen, entweder an "c$" oder an "Dokumente und Einstellungen", da dort Leerzeichen sind ?
    Wenn ja, wie sollte ich das besser lösen ?

    Spoiler anzeigen
    [autoit]


    #include <file.au3>
    Dim $client
    $client = InputBox("Hostname", "Gebe hier bitte den Hostnamen ein:")
    $var = Ping($client,250)
    If $var = 1 Then; also possible: If @error = 0 Then ...
    Msgbox(0,"Status",$client & " ist Online",1)
    ;Else
    ; Msgbox(0,"Status",$client & " ist nicht Online",1)
    ;EndIf
    $quelle = "\\"$client&"\c$\Dokumente und Einstellungen\doduck\*"
    ;$quelle1 = "D:\test1.exe"
    ;$ziel = "\\" & $client & "\c$\test\bin\"
    $ziel = "\\"$client&"\c$\Dokumente und Einstellungen\doduck.sic"

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

    If Not FileExists($ziel) Then
    DirCreate ($ziel)
    _copy($quelle,$ziel)
    ;_copy($quelle1,$ziel)
    ;MsgBox(0,$clients[$x], "not exist, wird angelegt ...",1)
    Else
    If $quelle > $ziel Then
    ;If $ver1 > $ver2 Then
    _copy($quelle,$ziel)
    ;_copy($quelle1,$ziel)
    MsgBox(0,$client, "wird kopiert ...",1)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )
    Else
    MsgBox(0,$client, $client & " aktuell ...",1)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- aktuell" & @CRlf )
    EndIf
    EndIf
    Else
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- fehler" & @CRlf )
    Msgbox(0,"Status",$client & " is Not Online",1)
    EndIf
    ;Next
    MsgBox (0,"","Abgeschlossen")
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]


    Edit Oscar: Spoiler gesetzt.

  • Profil auf Server erneuern

    • michach
    • 23. November 2010 um 14:16

    Sorry, da habe mich falsch ausgedrückt.

    mit "uns" meine ich meine Kollegen in der Firma. Programmiert wurde noch garnichts, ich bin alleine :(
    Habe damit noch nicht angefangen, bin allerdings auch noch anfänger in AutoIt.
    Ich Arbeite seit ca. 15 Jahren mit PHP und habe auch schon mit C++ etwas gearbeitet, somit sind mit Schleifen, Funktionen und Variablen nicht fremd, allerdings ist es doch etwas anders unter AutoIt :)

    Es soll mir auch keiner ein fertiges Scrippt machen, obwahl das auch nicht schlecht wäre *hehe
    Aber vielleicht etwas Hilfe im Ansatz oder paar Quellen wo ich mir das etwas zusammen suchen kann.

    Gruß
    micha

  • Profil auf Server erneuern

    • michach
    • 23. November 2010 um 14:01

    Hallo,

    ich habe eine Frage und hoffe hier vielleicht ein paar Tipps zu bekommen.

    Ziel:
    Profil auf dem Server erneuern

    Schritte:
    - per Hostname auf den Rechner übers Netzwerk zugreifen
    - Serverprofil des Benutzers liegt unter "Dokumente und EInstellungen"
    - Neuen Ordner erstellen mit den gleichen Profilnamen + _sic ( z.B. den Ordner Schmidt_sic ) und aus dem schon vorhanden Ordner alle Dateien in den neu angelegten Ordner ( Schmidt_sic ) kopieren.
    - Dateien aus dem alten Ordner löschen.

    Wichtig:
    Es sollte Abfragen geben
    - Ist der Rechner zu erreichen ?
    - Ist der Ordner Schmitd_sic erstellt worden ?
    - sind die Dateien vom alten Ordner in den neuen Ordner alle kopiert worden ?
    - Erst wenn die Dateien alle kopiert worden, dürfen diese aus dem alten Ordner gelöscht werden.

    Vorgehen:
    Es soll eine exe werden, wenn ich diese starte, soll nur eine eingabe kommen wo ich den Hostnamen eintragen muß. Sobald ich den Hostnamen eintrage, soll die Meldung kommen ob der Rechner zu erreichen ist, oder nicht.
    Wenn ja, möchte ich per Button die Profilerneuerung starten, entweder mit einem klick, wo dann nacheinander die schritte automatisch ausgeführt werden, oder mit mehreren Buttons, z.b.:
    Button "Ordner anlegen" -> Rückgabe "Ornder wurde angelegt"
    Button "Dateien Kopieren" -> Rückgabe "Dateien wurden in den neuen Ordner übertragen"
    Button "Dateien aus dem alten Ordner löschen" -> Rückgabe "Die Dateien wurden aus dem alten Ordner gelöscht"

    Hat da vielleicht eine Idee, oder könnte mit bei dem Script helfen, das würde uns die Arbeit sehr erleichtern.

    Vielen Dank
    Micha

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™