Hallo zusammen,
ich würde gern ein script für ein copy job erstellen.
zB für den Ordner "signatures" von
C:\Users\ANGEMELDETER USER\AppData\Roaming\Microsoft\Signatures
nach
D:\BACKUP\Signatures
Kann mir jemand helfen?
Gruß mari
Hallo zusammen,
ich würde gern ein script für ein copy job erstellen.
zB für den Ordner "signatures" von
C:\Users\ANGEMELDETER USER\AppData\Roaming\Microsoft\Signatures
nach
D:\BACKUP\Signatures
Kann mir jemand helfen?
Gruß mari
#include <File.au3>
$Path = "C:\Users\"&@UserName&"\AppData\Roaming\Microsoft\Signatures"
$Newpath = "D:\BACKUP\Signatures"
$List = _Filelisttoarray($Path)
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i],
Next
hi TheLuBu,
Funktioniert soweit. Vielen Dank.
Hätte noch eine Frage.
Dasselbe nochmal, bloß anstelle vom ganzen Inhalt eines Ordner nur den Ordner mit bestimmten Dateien..
zB. nur .pfd
Gruß mari
Schau dir mal die hilfe zu _filelisttoarray an, da kann man auch filter setzen
danke dir.
nach langen versuchen (bin halt ein newbie) hat es geklappt.
ich bekomme jetzt nur eine Fehlermeldung, wenn es die dateien welche ich kopieren will nicht gibt oder der ordner gar nicht existiert.
wie kann ich das umgehen ?
Habs mit
If Not FileExists($Path) Then Return SetError(1, 1, '')
If $sFilter = -1 Or $sFilter = Default Then $sFilter = "*.*"
versucht.
Allerdings bekomme ich hier die Fehlermeldung:
==> Subscript used with non-Array variable.:
For $i = 1 To $List[0]
For $i = 1 To $List^ ERROR
Hab leider keine Ahnung wie ich das umgehen kann ?!
Gruß
Statt
[autoit]If Not FileExists($Path) Then Return SetError(1, 1, '')
If $sFilter = -1 Or $sFilter = Default Then $sFilter = "*.*"
Setz mal das hier ein
$exist = dirgetsize($path)
If $exist = -1 then Return SetError(1, 1, '')
wenn der pfad existiert oder die dateien vorhanden sind, dann funktioniert es.
sobald aber eins davon fehlt bekomme ich folgende fehlermeldung:
==> Invalid keyword at the start of this line.:
If $exist = -1 then Return SetError(1, 1, '')
If $exist = -1 then ^ ERROR
$Path = "C:\Users\"&@UserName&"\AppData\Local\test"
$Newpath = "D:\Backup\test"
$sFilter = "*.pdf"
$List = _Filelisttoarray($Path, $sFilter)
$exist = dirgetsize($path)
If $exist = -1 then Return SetError(1, 1, '')
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i],
Next
idee?
Return geht nur in einer Funktion, dachte der Ausschnitt wäre aus einer.
Dann mach mal folgendes statt
$exist = dirgetsize($path)
If $exist = -1 then Return SetError(1, 1, '')
$exist = dirgetsize($path)
If $exist = -1 then
MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Exit
EndIF
Hey LuBu,
so geht es. Danke
Zumindest wenn der Pfad nicht vorhanden ist
Wenn der Pfad ok ist, die gesuchte Dateien aber nicht existieren bekomme ich immer noch die Fehlermeldung:
==> Subscript used with non-Array variable.:
For $i = 1 To $List[0]
For $i = 1 To $List^ ERROR
Gruß
Benutz doch bitte die AutoitCode Buttons, um den Text richtig darzustellen.
Du musst noch eine Abfrage machen, wenn keine Dateien gefunden werden.
$Path = "C:\Users\"&@UserName&"\AppData\Local\test"
$Newpath = "D:\Backup\test"
$sFilter = "*.pdf"
$List = _Filelisttoarray($Path, $sFilter)
If NOT @error = 4 Then
$exist = dirgetsize($path)
If $exist = -1 then
MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Exit
EndIF
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i],
Next
Else
Msgbox(16, "Fehler", "Es wurden keine Dateien gefunden")
EndIf
mach ich. sorry
So funktioniert es aber.
Danke dir für deine Untersützung.
letzte kleine bitte.
kann ich anstelle:
[autoit]
MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Etwas anderes einfügen?
Problem ist, dass wenn er kein Verzeichnis gefunden ich die Fehlermeldung bekomme - er den restlichen code aber nicht mehr ausführt.
Dabei folgt danach noch ein weiterer copy job eines verzeichnisses
Sowas wie "ignore" wäre sinnvoll.
ich habe da ein
[autoit]Exit
[/autoit]eingebaut, du könntest aber auch nur entweder ( bei einer Funktion) Return oder bei einer Schleife Exitloop bzw. Continueloop nutzen. Ich seh deinen restlichen Code aber leider nicht, den müsstest du auch posten, damit ich weiter helfen kann
hehe
ich habe jetzt einfach die MSgBox auskommentiert.
So macht er zumindest weiter
$Path = "C:\Users\"&@UserName&"\AppData\Local\test"
$Newpath = "D:\Backup\test"
$sFilter = "*.pdf"
$List = _Filelisttoarray($Path, $sFilter)
If NOT @error = 4 Then
$exist = dirgetsize($path)
If $exist = -1 then
;MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Exit
EndIF
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i],
Next
Else
;Msgbox(16, "Fehler", "Es wurden keine Dateien gefunden")
EndIf
;nächster Copyjob
[/autoit][autoit][/autoit][autoit]$Path = "C:\Users\"&@UserName&"\Favorites"
$Newpath = "D:\Backup\Favorites"
$List = _Filelisttoarray($Path)
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i],
Next
auch ok oder ?
Wenn Du es so stehen lässt, und der Ordner nicht existiert dann beendet er das ganze Script.
Ich habe dir jetzt mal ein Array gebastelt und alles in eine Schleife gesetzt. Der Code wird dadurch kürzer und du musst nur einmal auf Fehler abfragen, das gilt dann für alle durchsuchten Ordner.
Local $Path[2][3]
$Path[0][0] = "C:\Users\" & @UserName & "\AppData\Local\test"
$Path[0][1] = "D:\Backup\test"
$Path[0][2] = "*.pdf"
$Path[1][0] = "C:\Users\" & @UserName & "\Favorites"
$Path[1][1] = "D:\Backup\Favorites"
$Path[1][2] = "*"
For $i = 0 To UBound($Path) - 1
$List = _FileListToArray($Path[$i][0], $Path[$i][2])
If Not @error = 4 Then
$exist = DirGetSize($Path[$i][0])
If $exist = -1 Then
ConsoleWrite($Path[$i][0] & " wurde nicht gefunden")
ContinueLoop
EndIf
For $i = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$i], $Path[$i][1] & "\" & $List[$i],
Next
Else
ConsoleWrite("Im Ordner " & $Path[$i][0] & " wurden keine Dateien gefunden")
EndIf
Next
sieht in der tat übersichtlicher aus ..
allerdings kommt :
[autoit](21) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
FileCopy($Path[$i][0] & "\" & $List[$i], $Path[$i][1] & "\" & $List[$i],
FileCopy(^ ERROR
ach mist hab zweimal $I genutzt, dann kommt der mit den Indexen durcheinander
Ersetz mal bitte die Zeilen 17-19 hiermit
For $k = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$k], $Path[$i][1] & "\" & $List[$k],
Next
gesagt getan.
jetzt kommt
[autoit](26) : ==> "Next" statement with no matching "For" statement.:
Next
Poste bitte deinen gesamten Code, in meinem Code hab ich das nicht
dann hast du es spätestens jetzt
[autoit]#include <File.au3>
#Include <Array.au3>
Local $Path[2][3]
$Path[0][0] = "C:\Users\" & @UserName & "\AppData\Local\test"
$Path[0][1] = "D:\Backup\test"
$Path[0][2] = "*.pdf"
$Path[1][0] = "C:\Users\" & @UserName & "\Favorites"
$Path[1][1] = "D:\Backup\Favorites"
$Path[1][2] = "*"
For $i = 0 To UBound($Path) - 1
$List = _FileListToArray($Path[$i][0], $Path[$i][2])
If Not @error = 4 Then
$exist = DirGetSize($Path[$i][0])
If $exist = -1 Then
For $k = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$k], $Path[$i][1] & "\" & $List[$k],
Next
For $i = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$i], $Path[$i][1] & "\" & $List[$i],
Next
Else
ConsoleWrite("Im Ordner " & $Path[$i][0] & " wurden keine Dateien gefunden")
EndIf
Next
#include <File.au3>
#Include <Array.au3>
Local $Path[2][3]
$Path[0][0] = "C:\Users\" & @UserName & "\AppData\Local\test"
$Path[0][1] = "D:\Backup\test"
$Path[0][2] = "*.pdf"
$Path[1][0] = "C:\Users\" & @UserName & "\Favorites"
$Path[1][1] = "D:\Backup\Favorites"
$Path[1][2] = "*"
For $i = 0 To UBound($Path) - 1
$List = _FileListToArray($Path[$i][0], $Path[$i][2])
If @error = 4 Then
ConsoleWrite("Im Ordner " & $Path[$i][0] & " wurden keine Dateien gefunden")
ElseIf @error = 1 Then
ConsoleWrite("Ordner " & $Path[$i][0] & " wurden nicht gefunden")
Else
For $k = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$k], $Path[$i][1] & "\" & $List[$k],
Next
EndIf
Next
Hatte doch geschrieben ERSETZEN, nicht drüber schreiben
-EDIT- Hab grade gemerkt, das 2mal auf den Ordner geprüft wird, hier jetzt das angepasste