-
Notifications
You must be signed in to change notification settings - Fork 71
/
RoboCopy.ahk
65 lines (59 loc) · 2.07 KB
/
RoboCopy.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
Copia archivos y carpetas mediante la utilidad de Windows RoboCopy.
Parámetros:
Source : El directorio fuente.
Fest : El directorio destino. Si no existe se crea.
Files : Un array con los archivos a copiar.
Options: Opciones para el comando RoboCopy y la función Run. Estas son algunas opciones:
/Hide = No muestra ninguna ventana durante la operación.
LogFile: La ruta a un archivo en el que guardar la información de la operación realizada.
Return:
Si tuvo éxito devuelve el identificado del proceso de RoboCopy, caso contrario devuelve 0.
Ejemplo:
ToolTip('Copiando...')
Source := A_WinDir
Dest := A_Desktop . '\~tmp'
Files := '*.exe'
Options := '/Hide'
LogFile := A_Temp . '\robocopylog.txt'
PID := RoboCopy(Source, Dest, Files, Options, LogFile)
ToolTip()
If (PID)
{
ProcessWait(PID)
Run(LogFile,, 'Max')
}
Else
MsgBox('ERROR!')
ExitApp
*/
RoboCopy(Source, Dest, Files := '', Options := '', LogFile := '')
{
If (!DirExist(Source) || (!DirExist(Dest) && !DirCreate(Dest)))
Return (FALSE)
If (DirExist(LogFile) || (FileExist(LogFile) && !FileOpen(LogFile, 'w')))
Return (FALSE)
Local File
If (IsObject(Files))
{
Local Each, FileName, File
For Each, FileName in Files
File .= '"' . StrReplace(FileName, '"') . '"'
}
Else
File := Files == '' ? '' : '"' . StrReplace(Files, '"') . '"'
Local PID
RunOpt := InStr(Options, '/Hide') ? 'Hide' : ''
Options := StrReplace(Options, '/Hide')
Options := ' /UNICODE' . (LogFile == '' ? '' : ' /UNILOG:"' . LogFile . '"')
. (InStr(Options, '/R') ? '' : ' /R:0')
Run(A_WinDir . '\System32\RoboCopy.exe'
. ' "' . Source . '"'
. ' "' . Dest . '"'
. ' ' . File
. Options
, ''
, RunOpt
, PID)
Return (PID)
}