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.
Beiträge von michach
-
-
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 variableIrgendwo ist da plötzlich der Wurm drin, habe ich noch etwas übersehen ?
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit]
#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 ;==>copyVielen Dank nochmal für eure Hilfe.
Edit Oscar: Spoiler gesetzt.
-
Jaaaaaaaa,
vielen Dank, das kleine /A ist es gewesen, echt super Arbeit

-
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>
[/autoit]
#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 ;==>copyVielleicht 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.
-
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
[/autoit]
;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 )
NextBekomme jetzt aber eine Fehlermeldung:
Error: Subscript used with non-Array variableKann es sein das ich bei der $sCommand00 einen Fehler gemacht habe ?
-
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

-
bei den ordnern müsstest du "dirdelete" nehmen ...
Du meinst hier bestimmt DirRemove, oder ? -
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.
-
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. -
OK, ich habe das mal mit deinem Code versucht, so in dieser Form:
Spoiler anzeigen
[autoit]#include <file.au3>
[/autoit]
#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
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.
-
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

-
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. -
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]
[/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 ;==>copyEdit Oscar: Spoiler gesetzt.
-
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]
[/autoit] [autoit][/autoit] [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"If Not FileExists($ziel) Then
[/autoit]
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 ;==>copyEdit Oscar: Spoiler gesetzt.
-
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 -
Hallo,
ich habe eine Frage und hoffe hier vielleicht ein paar Tipps zu bekommen.
Ziel:
Profil auf dem Server erneuernSchritte:
- 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