Backup Skript - Fragen....

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Backup Skript - Fragen....

11 May 2021, 01:30

Ich habe folgendes Backup-Skript gefunden....
Allerdings verstehe ich leider nicht ganz wie genau es funktionieren soll.
Vielleicht hat Jemand Lust und Zeit ein paar Infos abzugeben.
Ein solches Skript ist mit Sicherheit auch für andere User von Interesse!

Code: Select all

#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#NoEnv ; Nicht nachsehen, ob leere Variablen evtl. Umgebungsvariablen sind, beschleunigt die Laufzeit
#SingleInstance force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
SetWorkingDir %A_ScriptDir% ; Dateioperationen finden im Scriptverzeichnis statt, falls kein Pfad angegeben wird!

; Skript von= KuroiLight - https://www.autohotkey.com/boards/viewtopic.php?t=41712
CreateDirectoryBackup(".\FolderOrigin", ".\FolderDest")
return

CreateDirectoryBackup(Source_Directory, Dest_Directory) {
    Source_Directory := AbsolutePath(Source_Directory) . ((SubStr(Source_Directory, 0, 1) == "\") ? "" : "\")
    Dest_Directory := AbsolutePath(Dest_Directory) . ((SubStr(Dest_Directory, 0, 1) == "\") ? "" : "\")
    if(!FileExist(Dest_Directory))
        FileCreateDir, %Dest_Directory%

    ; Verzeichnis-Layout erstellen
     Loop, Files, %Source_Directory%*, RD
    {
        New_Dir := StrReplace(A_LoopFileLongPath, Source_Directory, "")
        FileCreateDir, % Dest_Directory . New_Dir
    }

    ; Backup Dateien
    Loop, Files, %Source_Directory%*, RF
    {
        New_Filename := StrReplace(A_LoopFileLongPath, Source_Directory, "")

        FileGetTime, Backup_ModificationTime, % Dest_Directory . New_Filename, M
        if(!FileExist(Dest_Directory . New_Filename) or Backup_ModificationTime != A_LoopFileTimeModified) {
            FileCopy, %A_LoopFileLongPath%, % Dest_Directory . New_Filename, 1
            FileSetTime, %A_LoopFileTimeModified%,  % Dest_Directory . New_Filename, M
            FileSetAttrib, %A_LoopFileAttrib%,  % Dest_Directory . New_Filename, 1, 0
        }
    }

    ; Spiegellöschungen - mirror deletions
    Loop, Files, %Dest_Directory%*, RFD
    {
        Alt_Filename := StrReplace(A_LoopFileLongPath, Dest_Directory, "")

        if(!FileExist(Source_Directory . Alt_Filename)) {
            FileSetAttrib, N, %A_LoopFileLongPath%, 1, 0
            if(InStr(A_LoopFileAttrib, "D"))
                FileRemoveDir, %A_LoopFileLongPath%, 1
            else
                FileDelete, %A_LoopFileLongPath%
        }
    }
}

AbsolutePath(filename) { ; Nicht wirklich notwendig, hilft aber, mögliche Probleme zu vermeiden
    if(!filename)
        Throw, "AbsolutePath(): Übergebener Parameter ist ungültig."
    if(filename ~= "S)^\..+$") {
        filename := A_WorkingDir . SubStr(filename, 2)
    }
    Loop {
        filename := RegExReplace(filename, "S)^(.+\\)?.+[^\.]{2}\.\.[\\]?(.+)?$", "$1$2", replaces)
    } Until !replaces
    return filename
}

Greetings Best-Code-in-Use
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 05:07

Moin,

dem Skript werden ein Quell- und ein Zielveerzeichnis übergeben.
  • Zunächst wird versucht, aus evtl. relativen Verzeichnispfaden wie ".\FolderOrigin" absolute zu machen.
  • Dann wird mit der ersten Loop die Verzeichnisstruktur des Quellverzeichnisses in das Zielverzeichnis übertragen.
  • Mit der zweiten Loop werden anschließend die Dateien kopiert.
  • Die dritte Loop versucht zum Schluss, im Zielverzeichnis vorhandene Dateien und Ordner zu löschen, die nicht mehr im Quellverzeichnis zu finden sind.
    Ich bin nicht sicher, ob dabei Probleme entstehen können, wenn komplette Verzeichnisse mit Dateien gelöscht werden.
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 06:29

Grüß Dich und Danke...

Allerdings erschließt sich mir nicht, wie denn=

Code: Select all

CreateDirectoryBackup
zu interpretieren ist.

Da wäre es doch sinnvoller Variablen mitzugeben die die echten Ordnernamen oben auflisten, oder?
Ich bin nicht sicher, ob dabei Probleme entstehen können, wenn komplette Verzeichnisse mit Dateien gelöscht werden.
Das kommt darauf an, wie exakt das Ganze arbeitet.

Ich habe ähnliche Skripte im Produktivbetrieb, allerdings ist meine Lösung zu kompliziert um Sie einfach portieren zu können.
(Wie ich leider Gestern feststellen musste)
Daher fand ich den Ansatz dieser einfachen Lösung sehr schön.
Allerdings müssten logische Anpassungen erfolgen, die nicht ganz selbsterklärend sind.
Greetings Best-Code-in-Use
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Backup Skript - Fragen....

11 May 2021, 07:30

Um nicht irgendwann Probleme mit Backups zu haben, würde ich für sowas immer auf den cmd Befehl "robocopy" verweisen.
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 08:10

Okay, aber das ist ja nicht gerade ein Leichtgewicht...

Und solange das Problem mit den Logfiles (=Umlautproblematik) nicht geklärt ist, wäre ich da eher vorsichtig.
Ich arbeite sehr viel mit FreeFileSync, allerdings ist dann während des Vorgangs immer das Traysymbol zu sehen, das wäre ja mit einer reinen Robocopy und / oder AHK Lösung nicht der Fall.
Jedoch funktioniert FreeFileSync im Batchmode zuverlässig.

Schwierig da eine - halbwegs - universale Lösung zu finden!
Greetings Best-Code-in-Use
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 09:46

Best-Code-in-Use wrote:Und solange das Problem mit den Logfiles (=Umlautproblematik) nicht geklärt ist, ...
Was meinst Du?
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 10:08

das folgende Umlautproblem in der Robocopy Logdatei=
Dies-ist-ein-Test-ber-die™rger„rgelšPSIE.txt
Dateiname (es war ein Test versteht sich)= :dance:
Dies-ist-ein-Test-über-dieÖrgerärgelÜPSIE.txt
Allerdings wird die Datei dennoch korrekt kopiert... (mit Robocopy / YARCGUI)
Aber irgendwo auf dem Weg scheint er die korrekte Bezeichnung für das Protokoll zu "vergessen"!
Obwohl der Schalter /unicode gesetzt ist. Ob mit oder ohne diesen Schalter ist aber Egal, es funktioniert, aber das Protokoll ist nicht korrekt...
Man sollte also überlegen ob man damit leben kann.
Schlimmer wird es wahrscheinlich wenn Ordner- oder Dateinamen Leerzeichen enthalten!
Greetings Best-Code-in-Use
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Backup Skript - Fragen....

11 May 2021, 10:23

dieÖrgerärgelÜPSIE - dasama das geilste Wort der Woche :thumbup:
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

11 May 2021, 11:13

die™rger„rgelšPSIE
riecht stark nach dem CLI-Zeichensatz bzw. OEMCP. Wenn Du die LOG-Datei in AHK verwursteln willst, gibt es (soweit ich mich erinnere) zumindest zwei Möglichkeiten:

Code: Select all

...
LOGFILE := A_ScriptDir . "\Logfile.txt"
...
OEMCP := DllCall("GetOEMCP", "UInt")
FileRead, LOG, *P%OEMCP%  %LOGFILE%
...
; oder nur für die Darstellung in einem Edit-Control
...
FileRead, LOG, %LOGFILE%
; ES_OEMCONVERT = 0x0400
Gui, Add, Edit, w400 r25 +0x0400, %LOG%
...
garry
Posts: 3720
Joined: 22 Dec 2013, 12:50

Re: Backup Skript - Fragen....

11 May 2021, 16:11

Beispiel mit 'teadinker's CMDRET , logfile mit UMLAUT scheint OK ausgenommen z.B. chinese characters , aber in EDIT war alles OK ( benütze Button PRINT , siehe Beispiel )

oder kurz ... :
chcp 65001&robocopy %source% "%destination%" ....


ACHTUNG : Aendere Source und Destination für robocopy Test

Robocopy-Beispiel , Ausdruck vom GUI-EDIT PRINT-button :

Code: Select all

100%  
	    Neue Datei		    7468	多线程系统代理下载tube1080p视频_20210307161300.ahk
100%  
	 Neues Verz.       1	C:\Users\GARRY\Desktop\FAV_TEST\CMD_RET_DOS\Neuer Ordner\
	    Neue Datei		       5	Kühlschrank_Bär  etc.txt
100%  
	 Neues Verz.       0	C:\Users\GARRY\Desktop\FAV_TEST\CMD_RET_DOS\Neuer Ordner\Neuer Ordner\
------------------------------------------------------------------------------
           Insgesamt   KopiertÜbersprungenKeine Übereinstimmung    FEHLER    Extras
Verzeich.:         3         3         0         0         0         0
  Dateien:        15        15         0         0         0         0
    Bytes:    9.58 m    9.58 m         0         0         0         0
   Zeiten:   0:00:04   0:00:04                       0:00:00   0:00:00
Geschwindigkeit:             2078308 Bytes/Sek.
Geschwindigkeit:             118.921 Megabytes/Min.
   Beendet: Dienstag, 11. Mai 2021 22:49:35
===============================
SCRIPT CMDRET ( teadrinker ) mit GUI :

Code: Select all

;----------------------------------------------
;cmdx=chcp 65001&dir                            ;- this don't show chinese characters in EDIT
;cmdx:="ping autohotkey.com -n 4"
;--------------------------------------
F2=%a_desktop%\robocopyHelp.txt
;cmdx=chcp 65001&robocopy /? >%f2%              ;- robocopy helpfile OK
;--------------------------------------
;/*
;- this example shows chinese characters in EDIT / but not in LOGFILE , UMLAUT OK
;- use button PRINT 
;----------
logfile    =%a_desktop%\%a_now%_Robocopy_Log.txt
excludex   =%logfile%
;----------
source     =C:\Users\GARRY\Desktop\FAV_TEST\CMD_RET_DOS   ;-- <<<<<<
destination=F:\TESTXX                                     ;-- <<<<<<
;----------
cmdx=chcp 65001&robocopy %source% "%destination%" /XO /E /TEE /UNICODE /UNILOG+:%logfile% /XD %excludex%
;*/

;============== GUI test for robocopy  ===========
#warn
#noenv
name1:="DOS_TEST"
global name1
e:=""
;CPX:="cp" . DllCall("GetOEMCP", "UInt")        ;- get CODEPAGE e.g. CP850  [ use this for DOS commands ]
cpx:="cp65001"
setworkingdir,%a_scriptdir%
Gui,1:default
Gui,1: -DPIScale 
Gui,1:Color,Black,Black                        ; GUI black   / EDIT is BLACK
wa:=A_screenwidth,ha:=A_screenHeight,xx:=100
;- maybe change fontsize
;============ GUISIZEx DPIx 4Kx 3840*2160 is 100% ============
if (wa=3840)
 Gui,1:Font,s12 cYellow,Lucida Console
;============ GUISIZEx DPIx FHD 1920*1080 is 100% ============
else if (wa=1920)
 Gui,1:Font,s10 cYellow,Lucida Console
else
 Gui,1:Font,s8 cYellow,Lucida Console
;=============================================================
x:=(wa*1)/xx,y:=(ha*1)/xx,w:=(wa*70)/xx,h:=(ha*60)/xx
;Gui, Add, Edit, x%x%   y%y%  w%w% h%h% vED1 +0x0400          ;- here the output
Gui, Add, Edit, x%x%   y%y%  w%w% h%h% vED1                   ;- here the output
x:=(wa*1)/xx,y:=(ha*63)/xx,w:=(wa*65)/xx,h:=(ha*6)/xx
Gui, Add, Edit, x%x%   y%y% w%w%  h%h% vED2,%cmdx%            ;- add CMDx command above
x:=(wa*67)/xx,y:=(ha*63)/xx,w:=(wa*5)/xx,h:=(ha*2.2)/xx
Gui, add, Edit, x%x%  y%y% w%w%  h%h% vED3,
x:=(wa*67)/xx,y:=(ha*66)/xx,w:=(wa*5)/xx,h:=(ha*2.2)/xx
Gui,add,button, x%x%  y%y% w%w%  h%h% gPrintx, PRINT
x:=(wa*2)/xx,y:=(ha*2)/xx,w:=(wa*75)/xx,h:=(ha*75)/xx
Gui, Show,x%x% y%y% w%w% h%h%,%name1%
gosub,a0
GuiControl,1: Focus,ED2
;send,^{end}
return
;-------------------------
Guiclose:
Exitapp
esc::exitapp
;-------------------------
;- ENTER here DOS commands
~$enter::
CPX:="cp" . DllCall("GetOEMCP", "UInt")
gosub,a0
return
;=========================================================
AddOutputInGui(output) {
   Control, EditPaste, %output%`r`n, Edit1,%name1%    ;- display output in 1st EDIT
}
;=========================================================

A0:
Gui,1:submit,nohide
ed2a:="cmd /c " . ed2
;CmdRet(ED2a, Func("AddOutputInGui"),CPX)
xxc:=cmdret(ED2a, Func("AddOutputInGui"),CPX)
e .="`r`n===============================`r`n" . ed2 . " =`r`n-------------------------------`r`n" . xxc . "`r`n===============================`r`n"
e := RegExReplace(e, "((^)|\R)\h*(?=\R|$)(?(2)\R)")              ;- remove empty lines
gosub,clear
return
;-------------------------
CLEAR:
Gui,1:submit,nohide
Guicontrol,1:,ED2,
Guicontrol,1:,ED3,ENDED
GuiControl,1: Focus,ED2
 ifexist,%f2%
  run,%f2%
return
;-------------------------
printx:
f1=%a_desktop%\%a_now%_DOS_SCREEN_OUTPUT.txt
Gui,1:submit,nohide
if e<>
 {
 fileappend,%e%,%f1%,utf-8
 run,%f1%
 e:=""
 }
return

;================= function from user teadrinker ========================================
;- https://www.autohotkey.com/boards/viewtopic.php?p=369467#p369467
CmdRet(sCmd, callBackFuncObj := "", encoding := "CP0")
{
   static HANDLE_FLAG_INHERIT := 0x00000001, flags := HANDLE_FLAG_INHERIT
        , STARTF_USESTDHANDLES := 0x100, CREATE_NO_WINDOW := 0x08000000
   hPipeRead:=""
   hPipeWrite:=""
   sOutput:=""
   DllCall("CreatePipe", "PtrP", hPipeRead, "PtrP", hPipeWrite, "Ptr", 0, "UInt", 0)
   DllCall("SetHandleInformation", "Ptr", hPipeWrite, "UInt", flags, "UInt", HANDLE_FLAG_INHERIT)
   
   VarSetCapacity(STARTUPINFO , siSize :=    A_PtrSize*4 + 4*8 + A_PtrSize*5, 0)
   NumPut(siSize              , STARTUPINFO)
   NumPut(STARTF_USESTDHANDLES, STARTUPINFO, A_PtrSize*4 + 4*7)
   NumPut(hPipeWrite          , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*3)
   NumPut(hPipeWrite          , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*4)
   
   VarSetCapacity(PROCESS_INFORMATION, A_PtrSize*2 + 4*2, 0)
   if !DllCall("CreateProcess", "Ptr", 0, "Str", sCmd, "Ptr", 0, "Ptr", 0, "UInt", true, "UInt", CREATE_NO_WINDOW
                              , "Ptr", 0, "Ptr", 0, "Ptr", &STARTUPINFO, "Ptr", &PROCESS_INFORMATION)
   {
      DllCall("CloseHandle", "Ptr", hPipeRead)
      DllCall("CloseHandle", "Ptr", hPipeWrite)
      throw Exception("CreateProcess is failed")
   }
   DllCall("CloseHandle", "Ptr", hPipeWrite)
   VarSetCapacity(sTemp, 4096), nSize := 0
   while DllCall("ReadFile", "Ptr", hPipeRead, "Ptr", &sTemp, "UInt", 4096, "UIntP", nSize, "UInt", 0) {
      sOutput .= stdOut := StrGet(&sTemp, nSize, encoding)
      ;sOutput .= stdOut := StrGet(&sTemp, nSize)
      ;sOutput .= stdOut := StrGet(&sTemp, nSize, CPX)
      ( callBackFuncObj && callBackFuncObj.Call(stdOut) )
   }
   DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION))
   DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION, A_PtrSize))
   DllCall("CloseHandle", "Ptr", hPipeRead)
   Return sOutput
}
;================= END SCRIPT ========================================================================

;- PRINT button text copy
/*
	    Neue Datei		    7468	多线程系统代理下载tube1080p视频_20210307161300.ahk
100%  
	 Neues Verz.       1	C:\Users\GARRY\Desktop\FAV_TEST\CMD_RET_DOS\Neuer Ordner\
	    Neue Datei		       5	Kühlschrank_Bär  etc.txt
100%  
	 Neues Verz.       0	C:\Users\GARRY\Desktop\FAV_TEST\CMD_RET_DOS\Neuer Ordner\Neuer Ordner\
------------------------------------------------------------------------------
           Insgesamt   KopiertÜbersprungenKeine Übereinstimmung    FEHLER    Extras
Verzeich.:         3         3         0         0         0         0
  Dateien:        15        15         0         0         0         0
    Bytes:    9.58 m    9.58 m         0         0         0         0
   Zeiten:   0:00:04   0:00:04                       0:00:00   0:00:00
Geschwindigkeit:             2078308 Bytes/Sek.
Geschwindigkeit:             118.921 Megabytes/Min.
   Beendet: Dienstag, 11. Mai 2021 22:49:35
===============================
*/

Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

12 May 2021, 01:30

@just me
Vielen Dank für Deine Idee und den Denkansatz...

@garry
Vielen Dank für Deine Lösung.
Das sieht richtig gut aus, insbesondere auch dadurch weil das Logfile pro Datei eine Zeile erzeugt.
Das geht hiermit leider nicht=
https://www.autohotkey.com/boards/viewtopic.php?t=39955

Ich werde das Morgen mal testen und melde mich dann wieder.

@All
Vielen Dank erst einmal für Eure Hilfe!
Greetings Best-Code-in-Use
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

12 May 2021, 05:45

@garry

Funktioniert Super... Einzig bei Ordnern und Unterordnern scheint es keine jeweils neue Zeile pro Eintrag im Logfile zu geben.
Aber Egal...

Kleiner Tipp=
Durch Einbau der nachfolgenden Kommandozeile lässt sich das Kopieren noch beschleunigen=

Code: Select all

/MT:2
Der Parameter „/MT:2“ bedeutet, dass 2 Threads gleichzeitig genutzt werden.
Allerdings sollte man es nicht übertreiben, die am Meisten genutzte Option ist hier=

Code: Select all

/MT:8
Dies kann jedoch schon eine nicht unerhebliche Belastung bei herkömmlichen Festplatten verursachen. Da dann sehr viele Lese- und Schreibvorgänge in kurzer Zeit gestartet werden!
Greetings Best-Code-in-Use
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Batchmodus: Backup Skript - Fragen....

13 May 2021, 12:38

@garry

Aber wie könnte man das Backup als Batchdatei starten?
Ich sehe durch das Funktionsschema leider nicht so recht durch...
Im Batchmodus wäre natürlich auch keine GUI Notwendig.
Sehr schön wäre allerdings wenn Du bitte mal erklären könntest, wie die korrekte Ausgabe des Logfiles - ohne Umlautprobleme und Co. - umzusetzen wäre.
Greetings Best-Code-in-Use
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 04:12

Leider komme ich mit der Einbindung von Robocopy nicht weiter.

Code: Select all

#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
; #NoEnv ; Nicht nachsehen, ob leere Variablen evtl. Umgebungsvariablen sind, beschleunigt die Laufzeit
#SingleInstance force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
SetWorkingDir %A_ScriptDir% ; Dateioperationen finden im Scriptverzeichnis statt, falls kein Pfad angegeben wird!
#Warn


Kopierbefehl := %A_WinDir%\System32\Robocopy.exe "%OriginalOrdner%" "%Kopierziel%" /E /R:10 /W:5 /MT:2 /UNICODE /UNILOG+:"%Kopierziel%\zzz_Log_Copied_files.txt"
OriginalOrdner := "C:\Users\" A_UserName "\Scoutsystems\" 
Kopierziel := "D:\test"

runwait, %comspec% /c %Kopierbefehl%, ,Hide
Allerdings hat die Befehlskette wohl einige Syntaxfehler.
Mal unabhängig davon das diese Einbindung gewisse Probleme bereiten würde.

Besser wäre folgendes Schema=
Quelle 1 >>> Ziel 1 >>> "Robocopy Befehle"
Quelle 2 >>> Ziel 2 >>> "Robocopy Befehle"
Denn dann wäre auch eine geschmeidigere Batchverarbeitung möglich!
Könnte bitte Jemand helfen?
Greetings Best-Code-in-Use
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 04:44

Moin,

da ist ein ziemliches Durcheinander:

Wenn Du beim Aufbau der Befehlszeile auf die Variablen OriginalOrdner und Kopierziel zugreifen willst, müssen die vorher gefüllt werden:

Code: Select all

OriginalOrdner := "C:\Users\" A_UserName "\Scoutsystems\" 
Kopierziel := "D:\test"
Kopierbefehl := %A_WinDir%\System32\Robocopy.exe "%OriginalOrdner%" "%Kopierziel%" /E /R:10 /W:5 /MT:2 /UNICODE /UNILOG+:"%Kopierziel%\zzz_Log_Copied_files.txt"
Außerdem benutzt Du für den Aufbau der Variablen Kopierbefehl einen Ausdruck := . Dafür muss die Zuweisung auf der rechten Seite angepasst werden:

Code: Select all

Kopierbefehl := A_WinDir . "\System32\Robocopy.exe """ . OriginalOrdner . """ """ . Kopierziel . """ /E /R:10 /W:5 /MT:2 /UNICODE /UNILOG+:""" . Kopierziel . "\zzz_Log_Copied_files.txt"""
Oder Du lässt es bei der Kommandosyntax:

Code: Select all

Kopierbefehl = %A_WinDir%\System32\Robocopy.exe "%OriginalOrdner%" "%Kopierziel%" /E /R:10 /W:5 /MT:2 /UNICODE /UNILOG+:"%Kopierziel%\zzz_Log_Copied_files.txt"
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 05:13

da ist ein ziemliches Durcheinander
Sorry, ich weiß, das liegt allerdings auch daran, das ich es mir komplett zusammengesucht habe, ohne zu verstehen was genau da passiert.
:facepalm:

So, jetzt aber, vielen Dank....
Leider funktioniert der Aufruf von Robocopy aber (noch) nicht!
Da muss es noch einen Syntaxfehler für die Übergabe an die Console geben.
Meine intensive Suche hier, hat aber nicht so wirklich eine Erleuchtung gebracht.
Greetings Best-Code-in-Use
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 05:29

Code: Select all

runwait, %comspec% /c ...
Hast Du mal aus dem /c (close) ein /k (keep) gemacht? Dann kannst Du in Ruhe anschauen, was passiert ist.
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 05:34

Ja, habe ich gerade...

Code: Select all

,Hide
"Hide" habe ich ebenfalls entfernt, aber das Konsolenfenster schließt sofort wieder
Greetings Best-Code-in-Use
just me
Posts: 9407
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Backup Skript - Fragen....

14 May 2021, 07:33

Soll heißen, bei

Code: Select all

runwait, %comspec% /k %Kopierbefehl%
schließt sich das CMD-Fenster automatisch?
Ungewöhnlich!
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Backup Skript - Fragen....

14 May 2021, 08:37

just me wrote:
14 May 2021, 07:33
Soll heißen, bei

Code: Select all

runwait, %comspec% /k %Kopierbefehl%
schließt sich das CMD-Fenster automatisch?
Ungewöhnlich!
Falls ich das nicht falsch interpretiere - er führt Robocopy.exe direkt über dessen eigen Kommandozeilenfunktionalität aus, während du stattdessen Windows' CMD.exe (im Kiosk-Mode) bemühst. Apfel & Birne, oder?? :shifty:

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 18 guests