-
Notifications
You must be signed in to change notification settings - Fork 0
/
orgPhotos.ps1
107 lines (85 loc) · 2.58 KB
/
orgPhotos.ps1
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#Input Params
param ($src,$target,$debugMode)
$srcFolder = $src
$targetFolder = $target
#functions
function DefaultFolderValue {
param([string]$inputSrt)
if ([string]::IsNullOrEmpty($inputSrt)) {
return '.\'
}
elseif ( !($inputSrt[-1] -eq '\')) {
return $inputSrt + '\'
}
else {
$inputSrt
}
}
function OrgPhotos {
param([string]$srcRoot, [string]$dstRoot, [bool]$debugMode)
$fileList = Get-ChildItem -Path $srcRoot -File -Recurse
$shell = New-Object -COMObject Shell.Application
$matchPattern = '(?<DAY>[0-9]{2})(?<MONTH>[0-9]{2})(?<YEAR>[0-9]{4})';
$i = 0;
foreach ($file in $fileList) {
$folderPath = Split-Path $file.FullName
$objFolder = $shell.Namespace($folderPath)
$shellfile = $objFolder.ParseName($file.Name)
$taken = $objFolder.getDetailsOf($shellfile, 12) -replace '[^0-9]', ''
$midia = $objFolder.getDetailsOf($shellfile, 209) -replace '[^0-9]', ''
$year = ""
$month = ""
$day = ""
if ($taken -match $matchPattern) {
$year = $Matches.YEAR
$month = $Matches.MONTH
$day = $Matches.DAY
}
elseif ($midia -match $matchPattern) {
$year = $Matches.YEAR
$month = $Matches.MONTH
$day = $Matches.DAY
}
else {
$year = $file.LastWriteTime.ToString("yyyy")
$month = $file.LastWriteTime.ToString("MM")
$day = $file.LastWriteTime.ToString("dd")
}
$newPath = $dstRoot + $year + "\" + $month + "\" + $day
$fileNewFullName = $newPath + "\" + $file.Name
if ($debugMode) {
Write-Output $file.FullName
Write-Output $fileNewFullName
}
else {
If (!(test-path $newPath )) {
New-Item -ItemType Directory -Force -Path $newPath
}
Move-Item -Path $file.FullName -Destination $fileNewFullName -Force
}
$i++;
}
if (!$debugMode) {
write-host $i " arquivos movidos com sucesso"
}
else {
write-host $i " arquivos listados"
}
}
#Exec
$srcFolder = DefaultFolderValue -inputSrt $srcFolder
if ([string]::IsNullOrEmpty($targetFolder)) {
$targetFolder = $srcFolder
}
else {
$targetFolder = DefaultFolderValue -inputSrt $targetFolder
}
$debug = $false;
if ($debugMode -eq 1) {
$debug = $true
}
if ($debug) {
write-host $srcFolder
write-host $targetFolder
}
OrgPhotos -srcRoot $srcFolder -dstRoot $targetFolder -debugMode $debug