-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutoOrient.cmd
130 lines (114 loc) · 3.92 KB
/
AutoOrient.cmd
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION&::(Don't pollute the global environment with the following)
SET $NAME=%~n0
SET $DESCRIPTION=Auto orient pictures using the EXIF orient
SET $Author=Erik Bachmann, ClicketyClick.dk ([email protected])
SET $Source=%~dpnx0
::----------------------------------------------------------------------
::@(#) NAME
::@(#) %$NAME% -- %$DESCRIPTION%
::@(#)
::@(#) SYNOPSIS
::@(#) %$NAME%
::@(#)
::@(#)
::@(#)
::@(#)ARGUMENTS
::@(#)
::@(#) DESCRIPTION
::@(#)
::@(#)
::@(#)
::@(#)
::@(#)EXAMPLE
::@(#) Call %$NAME%
::@(#)
::@(#)
::@(#)EXIT STATUS
::@(#) Exit status is 0 if any matches were found, otherwise 1.
::@(#)
::@(#)REQUIRES
::@(#) exiftool.exe Read and write meta information in files
::@(#) http://www.sno.phy.queensu.ca/~phil/exiftool/
::@(#) convert.exe ImageMagick convert tool
::@(#) http://www.imagemagick.org
::@(#)
::@(#)LIMITATIONS
::@(#)
::@(#)SEE ALSO
::@(#)
::@(#)SOURCE
::@(#) %$Source%
::@(#)
::----------------------------------------------------------------------
::History
::SET $VERSION=xx.xxx&SET $REVISION=YYYY-MM-DDThh:mm:ss&SET $Comment=Init Description/Initials
::SET $VERSION=2015-08-09&SET $REVISION=11:00:00&SET $Comment=Initial/EBP
::SET $VERSION=2015-08-09&SET $REVISION=11:00:00&SET $Comment=Initial/EBP
SET $VERSION=2015-10-11&SET $REVISION=11:00:00&SET $Comment=Initial/EBP
::**********************************************************************
::@(#)(C)%$Revision:~0,4% %$Author%
::**********************************************************************
:Init
ECHO:%$NAME% v.%$VERSION%T%$REVISION%
ECHO:- %$DESCRIPTION%
ECHO:- by %$Author%
ECHO:
SET PATH=C:\_;%PATH%
SET ExifTool=%~dp0\exiftool\exiftool.exe
SET ImageMagickConvert=%~dp0\imagemagick\imgconvert.exe
SET _LOG=%~dpn0.log.txt
SET _count.ok=0
SET _count.cw=0
SET _count.ccw=0
SET _count.ignore=0
SET _Count.total=0
SET _count.processed=0
FOR /F %%a IN ('FORFILES /M "*.jpg"') DO SET /A _Count.total+=1
(
ECHO:%$NAME% v.%$VERSION%T%$REVISION%
ECHO:Start %Date% %Time%
ECHO:
ECHO:Total no of files: %_Count.total%
)>%_log%
:Process
:: BUG: takes _org files in too
:: FOR %%a IN ("*.jpg") DO CALL :GetRotation %%a
FOR /F %%a IN ('FORFILES /M "*.jpg"') DO CALL :GetRotation %%a
:Finalize
ECHO:
SET _Count.
SET _Count.>>%_log%
ECHO:End: %Date% %Time%>>%_log%
ECHO *** Done ***
GOTO :EOF
::----------------------------------------------------------------------
:GetRotation :: Find all Jpg to test
FOR /F "Delims=: tokens=2" %%b IN ('%ExifTool% -Orientation -n "%~1"') DO CALL :derotate "%~1" %%b
GOTO :EOF
::----------------------------------------------------------------------
:log :: Write log entries
TITLE "%~1" [%~2] - %~3
ECHO:%~4 "%~1" [%~2] - %~3
ECHO:%~4 "%~1" [%~2] - %~3>>%_log%
GOTO :EOF
::----------------------------------------------------------------------
:derotate filename orientation :: Auto-orient if requiered
SET _FILE=%~1
SET /A _count.processed+=1
IF /I "_org"=="%_FILE:~-4%" TITLE "%~1" [%~2] - Ignore&ECHO:"%~1" [%~2] - Ignore>>%_log%&SET /A _count.ignore+=1&GOTO :EOF
IF "1"=="%~2" ( REM Normal
CALL :log "%~1" "%~2" "%_count.processed%/%_Count.total%: Skip" "-"
SET /A _count.ok+=1
) ELSE IF "6"=="%~2" (
CALL :log "%~1" "%~2" "%_count.processed%/%_Count.total%: Rotate 90 CW" "+"
RENAME "%~1" "%~1_org"
"%ImageMagickConvert%" -auto-orient "%~1_org" "%~1"
SET /A _count.cw+=1
) ELSE IF "8"=="%~2" (
CALL :log "%~1" "%~2" "%_count.processed%/%_Count.total%: Rotate 90 CCW" "+"
RENAME "%~1" "%~1_org"
"%ImageMagickConvert%" -auto-orient "%~1_org" "%~1"
SET /A _count.ccw+=1
)
::*** End of File *****************************************************