Dank nochmal an Alle für die Hilfe
Beiträge von hpb
-
-
Dank für die schnelle Hilfe - funkioniert.
Werde noch prüfen warum das mir nicht klappt.
Schönes Wochende - meins ist jetzt gerettet.
-
ich hoffe, ich erfülle die Bedingungen deines Tipps
Ich habe mit Eurer Hilfe folgendes Script gebastelt:
AutoIt$src = 'E:\taegl_Backup_P1\2022-02-06' $srcd = 'E:\taegl_Backup_P1\2022-02-06\D$' $dst = 'E:\jaehrl_Backup\2022\2022-02' If FileExists ($src) And StringInStr(FileGetAttrib ($src), 'DC') Then Run (@ComSpec & ' /k robocopy.exe "' & ($srcd) & '" "' & ($dst) & '" /E /XO', @SystemDir) EndIf FileSetAttrib (($src), '+O') Exit
Wie kann ich dazu noch folgendes hinzufügen:
Lösche "E:\taegl_Backup_P1\2020-02-06"?
Mit
AutoItLocal $String = StringMid ("E:\taegl_Backup_P1\2022-02-06" , 1, 26) $sNewDate = StringReplace(_DateAdd('Y', -2, "2022-02-06"), "/", "-") MsgBox(4096, "", $String & $sNewDate)
gibt die MsgBox zwar E:\taegl_Backup_P1\2020-02-06 aus -
aber DirRemove braucht den path.
Kann ich statt in die MsgBox einen path für DirRemove ausgeben oder gibt es einen anderen Weg?
EDIT BugFix: Bitte setze deinen Code in Code-Boxen (Menü: </>, Sprachauswahl: AutoIt), habe das mal für dich gemacht.
-
Guten Morgen,
Dank für eure Hilfe, um weitere Missverständnisse - durch meine unpräzisen Angaben - auszuschließen, schließe ich das Thema und beginne noch mal von vorne.
Gruß HP
-
-
Ich brauche IfFileExists!
Ich möchte z.B. ("E:\\taegl_Backup_P1\2022-02-06"), ("E:\Server\taegl_Backup_P1\2022-02-19") und
("E:\Server\taegl_Backup_P1\2022-02-29") nacheinander nach ("E:\jaehrl_Backup\2022\2022-02") kopieren.
Mit
If FileExists("E:\taegl_Backup_P1\2022-02-06") And StringInStr(FileGetAttrib("E:\taegl_Backup_P1\2022-02-06"), 'DC') Then
habe ich die Bedinungen 1 und 2 erfüllt.
Das mit dem _AddDate habe ich hofentlich begriffen, aber unabhängig davon - wie füge ich den Nachweis von
("E:\jaehrl_Backup\2022\2022-03") als weitere Bedingung ein?
If FileExists("E:\taegl_Backup_P1\2022-02-06") And StringInStr(FileGetAttrib ("E:\taegl_Backup_P1\2022-02-06"), 'DC') And (Bedingung 3) Then
Das ist für mich wichtig, da ich erst dann die die Ordner aus dem taegl_Backup_P1-Monat 02 nach jaehrl_Backup_P1-Monat 02 kopiere wenn ("E:\jaehrl_Backup\2022\2022-03") existiert - d.h. der Monat 02 ist vorbei, also mache ich mein Backup.
Gruß HP
-
Hast ja recht daher das ganze mal von vorne:
Ich habe mit Eurer Hilfe folgendes Script gebastelt:
If FileExists("E:\taegl_Backup_P1\2022-02-06") And StringInStr(FileGetAttrib("E:\taegl_Backup_P1\2022-02-06"), 'DC') Then
Run (@ComSpec & ' /k robocopy.exe "' & ("E:\taegl_Backup_P1\2022-02-06\D$") & '" "' & ("E:\jaehrl_Backup\2022\2022-02") & '" /E /XO', @SystemDir)
EndIf
Damit sind Bedingung 1 und Bedingung 2 erfüllt.
Wie kann ich die Bedingung 3 einfügen?
If FileExists("E:\taegl_Backup_P1\2022-02-06") And StringInStr(FileGetAttrib("E:\taegl_Backup_P1\2022-02-06"), 'DC') And (Bedingung 3) Then
Bedingung 1: Existiert der Ordner If FileExists("E:\taegl_Backup_P1\2022-02-06")
Bedingung 2: Prüfe ob dieser Ordner die Attribute DC hat (FileGetAttrib("E:\taegl_Backup_P1\2022-02-06"), 'DC')
Bedingung 3: Existiert der Ordner ("E:\jaehrl_Backup\2022\2022-03")
Ich möchte dafür ("E:\jaehrl_Backup\2022\2022-02" +1) nutzen
-
Du hast natürlich recht mit _DateAdd.
Wie lässt sich das Ergebnis von $sNewDate als weitere Bedingung in die Zeile
If FileExists("E:\Test") And StringInStr(FileGetAttrib("E:\Test"), 'DC') And Ergebnis von $sNewDate Then
einbauen?
Dank für Deine Hilfe
-
AutoIt
Local $sFolder, $sDelFolder $sFolder = "2022-02-06" $sDelFolder = StringMid($sFolder, 1, 4) & '-' & StringFormat("%02s", String(Number (StringMid($sFolder, 6, 2) + 1) )) & '-' & StringMid($sFolder, 9, 2) MsgBox(4096, "", "Verzeichnis = " & $sFolder & @CRLF & "Entfernen = " & $sDelFolder & @CRLF)
Das kann ich nachvollziehen - aber warum muss StringFormat("%02s", String(Number (StringMid($sFolder, 6, 2) + 1) ))
gesetzt werden?
-
Ich hab versucht dieses Script von Musashi
AutoItLocal $sFolder, $sDelFolder $sFolder = "2022-02-06" $sDelFolder = String(Number(StringMid($sFolder, 1, 4) - 1)) & '-' & StringMid($sFolder, 6, 2) & '-' & StringMid($sFolder, 9, 2) MsgBox(4096, "", "Verzeichnis = " & $sFolder & @CRLF & "Entfernen = " & $sDelFolder & @CRLF)
so umzubauen
AutoItLocal $sFolder, $sDelFolder $sFolder = "2022-02-06" $sDelFolder = String & StringMid($sFolder, 1, 4) & '-' & (Number (StringMid($sFolder, 6, 2) +1))& '-' & StringMid($sFolder, 9, 2) MsgBox(4096, "", "Verzeichnis = " & $sFolder & @CRLF & "Entfernen = " & $sDelFolder & @CRLF)
Hat natürlich nicht funktioniert - die MsgBox bleibt unter "Entfernen" leer, es wird auch kein Syntax error angezeigt.
-
; Alternativ : ; If FileExists($sPath) And StringInStr(FileGetAttrib($sPath), 'D') Then
Das ist die Lösung, die mir auch bei weiteren Abfragen helfen wird.
Herzlichen Dank
-
Ich möchte den Ordner E:\Test finden.
Mit
AutoItIf Not StringRegExp(FileGetAttrib (("E:\Test")), '(?i)[DOC]{3}') Then Run (@ComSpec & ' /k robocopy.exe "' & ("E:\Test") & '" "' & ("D:\Test") & '" /E /XO', @SystemDir) EndIf
stelle Ich die Attribute fest und kopiere.
Wie schreibe ich das Script für
Finde den Ordner - ist der Ordner vorhanden - dann
AutoItIf Not StringRegExp(FileGetAttrib (("E:\Test")), '(?i)[DOC]{3}') Then Run (@ComSpec & ' /k robocopy.exe "' & ("E:\Test") & '" "' & ("D:\Test") & '" /E /XO', @SystemDir) EndIf
Gruß HP
-
Danke für den Tip, dass die Func einmal im Script vorhanden sein muss
-
weil die Func in Ordnung ist - sie arbeitet einwandfrei, denn sie ist
von BugFix .
Ich möchte die Func nur mit anderen Parametern im gleichen Script
nochmals nutzen.
Wenn ich das Script kopiere - also 2x ausführe erhalte ich
$sFolder = "E:\2022-02-06"
_DeleteLastYear($sFolder)
Func _DeleteLastYear($_sFolder)
Local $aPath = StringRegExp($_sFolder, '(.+)\\(\d{4})(-\d{2}-\d{2})$', 3)
Local $RemoveDir = StringFormat('%s\%s%s', $aPath[0], $aPath[1]-1, $aPath[2])
Return DirRemove($RemoveDir)
EndFunc
Exit
$sFolder = "E:\2022-02-07"
_DeleteLastYear($sFolder)
Func _DeleteLastYear($_sFolder) ; error: _DeleteLastYear () already defined
Local $aPath = StringRegExp($_sFolder, '(.+)\\(\d{4})(-\d{2}-\d{2})$', 3)
Local $RemoveDir = StringFormat('%s\%s%s', $aPath[0], $aPath[1]-1, $aPath[2])
Return DirRemove($RemoveDir)
EndFunc
Exit
Mit
$sFolder = "E:\2022-02-06"
_DeleteLastYear($sFolder)
Func _DeleteLastYear($_sFolder)
Local $aPath = StringRegExp($_sFolder, '(.+)\\(\d{4})(-\d{2}-\d{2})$', 3)
Local $RemoveDir = StringFormat('%s\%s%s', $aPath[0], $aPath[1]-1, $aPath[2])
Return DirRemove($RemoveDir)
EndFunc
Exit
$sFolder = "E:\2022-02-07"
Call ("_DeleteLastYear", $sFolder)
Exit
wird zwar die 1. Func ausgeführt - aber sonst passiert nichts.
Daher die Frage: Was habe ich mit Call falsch gemacht?
-
BugFix hat folgendes Script geschrieben :
AutoIt$sFolder = "E:\2022-02-06" _DeleteLastYear($sFolder) Func _DeleteLastYear($_sFolder) Local $aPath = StringRegExp($_sFolder, '(.+)\\(\d{4})(-\d{2}-\d{2})$', 3) Local $RemoveDir = StringFormat('%s\%s%s', $aPath[0], $aPath[1] - 1, $aPath[2]) Return DirRemove($RemoveDir) EndFunc ;==>_DeleteLastYear
Ich hatte die Hoffnung mit
$sFolder = "E:\2022-02-07"
Call ("_DeleteLastYear", $sFolder)
den nächsten Ordner zu löschen aber es passiert nichts
- keine Fehlerangabe im Script
- der Ordner wird nicht gelöscht
Mach ich einen Fehler bei "Call"?
Gruß HP
-
Das ist die Lösung, die ich brauche.
An alle Anderen: Ich bin zu langsam für Euch - werde demnächst länger warten ob noch weitere Vorschläge kommen.
Herzlichen Dank für Eure Hilfe.
Gruß HP
-
ich versuche mal zu beschreiben:
Mein Script soll ausführen:
1. kopiere den Ordner E:\2022-02-06
2. lösche den Ordner E:\2021-02-06
Dein Ansatz ist also völlig richtig - wie die MsgBox ausgibt
Ich hätte gerne statt der MsgBox den Pfad ausgegeben, damit ich
DirRemove ("Pfad")
ausführen kann
Gruß HP
-
Deine Annahme ist richtig.
Aber weil meine Frage nicht konkret war haperts auch mit der Umsetzung:
1. Wenn ich $sFolder = "E:\2022-02-06" stimmt der String in $sDelFolder nicht mehr - bitte neu schreiben
2. Wie kann ich das Ergebnis umsetzen - DirRemove (Ergebnis)
Dank für die Mühe
Gruß HP
-
Guten Tag,
Ich bin mal wieder auf dem Holzweg!
Ich kopiere den Ordner A (2022-02-06) in mein Backup und möchte dann den Ordner B (2021-02-06) löschen.
Meine Idee war mit _DateTimeSplit das Jahr auszulesen, dann mit
$Zahl1 = 2022
$Zahl2 = 1
$Ergebnis = $Zahl1 - $Zahl2
den Ordner B ($Ergebnis-02-06) löschen zu können.
Die MsgBox zeigt zwar 2021 an - aber die Übergabe funktioniert nicht.
Für Lösungen wäre ich dankbar
Gruß HP
-
Danke für den Hinweis