hi, ich möchte den Ordner: E:\Info\#Im in den Ordner kopieren, den ich aktuell angewählt habe. Der Inhalt vom Ordner E:\Info\#Im soll natürlich mit kopiert werden. Und falls im aktuell ausgewählem Ordner bereits ein Ordner #Im existiert soll dessen Inhalt nur überschrieben werden mit den Dateien die noch fehlen im Vergleich zum Quellordnerinhalt: E:\Info\#Im. Das ganze soll mit dem hotkey strg+alt+g passieren. So klappt es schonmal nicht ;):
AutoIt
#include <File.au3>
; Definiere den absoluten Pfad für den Quellordner
Local $sourceFolder = "E:\Info\#Im" ; Ändere diesen Pfad auf den absoluten Pfad des #Im-Ordners
; Setze den Hotkey Strg + Alt + G
HotKeySet("^!g", "CopyFilesHotkey")
; Halte das Skript am Laufen, bis der Benutzer es beendet
While 1
Sleep(100) ; Warte in einer Schleife
WEnd
Func CopyFilesHotkey()
; Überprüfen, ob ein Zielordner ausgewählt ist
Local $targetFolder = GetSelectedFolder()
If $targetFolder = "" Then
MsgBox(0, "Fehler", "Kein Zielordner ausgewählt oder der ausgewählte Ordner ist ungültig.")
Return
EndIf
; Überprüfen, ob der Quellordner existiert
If Not FileExists($sourceFolder) Then
MsgBox(0, "Fehler", "Der Quellordner existiert nicht: " & $sourceFolder)
Return
EndIf
; Überprüfen, ob der Zielordner bereits existiert
If Not FileExists($targetFolder) Then
; Wenn der Zielordner nicht existiert, erstelle ihn
DirCreate($targetFolder)
EndIf
; Kopiere den #Im-Ordner in den ausgewählten Zielordner
Local $targetImFolder = $targetFolder & "\#Im"
FileCopy($sourceFolder, $targetImFolder, 1) ; 1 = Überschreibe, wenn der Ordner bereits existiert
EndFunc ;==>CopyFilesHotkey
Func GetSelectedFolder()
Local $hWnd = WinGetHandle("[ACTIVE]") ; Aktives Fenster ermitteln
If Not IsHWnd($hWnd) Then Return ""
; Simuliere das Drücken von Strg + C, um den Pfad des ausgewählten Ordners in die Zwischenablage zu kopieren
Send("^{c}")
Sleep(100) ; Warten, um sicherzustellen, dass der Pfad kopiert wurde
; Lese den Inhalt der Zwischenablage
Local $clipboardContent = ClipGet()
If StringLen($clipboardContent) > 0 Then
Return StringTrimRight($clipboardContent, 1) ; Trim newline character
EndIf
Return ""
EndFunc ;==>GetSelectedFolder
Alles anzeigen
Wie geht das richtig?