[3321] | 1 | @echo off |
---|
| 2 | rem ~ +-----------------------------------------------------------------------+ |
---|
[8425] | 3 | rem ~ | BuildPWGPicture - a Windows batch command for Piwigo | |
---|
| 4 | rem ~ | Copyright (C) 2007-2011 Ruben ARNAUD - rub@piwigo.org | |
---|
[3321] | 5 | rem ~ +-----------------------------------------------------------------------+ |
---|
| 6 | rem ~ | Version: 1.0.6.0 | |
---|
| 7 | rem ~ +-----------------------------------------------------------------------+ |
---|
| 8 | rem ~ | This program is free software; you can redistribute it and/or modify | |
---|
| 9 | rem ~ | it under the terms of the GNU General Public License as published by | |
---|
| 10 | rem ~ | the Free Software Foundation | |
---|
| 11 | rem ~ | | |
---|
| 12 | rem ~ | This program is distributed in the hope that it will be useful, but | |
---|
| 13 | rem ~ | WITHOUT ANY WARRANTY; without even the implied warranty of | |
---|
| 14 | rem ~ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
---|
| 15 | rem ~ | General Public License for more details. | |
---|
| 16 | rem ~ | | |
---|
| 17 | rem ~ | You should have received a copy of the GNU General Public License | |
---|
| 18 | rem ~ | along with this program; if not, write to the Free Software | |
---|
| 19 | rem ~ | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |
---|
| 20 | rem ~ | USA. | |
---|
| 21 | rem ~ +-----------------------------------------------------------------------+ |
---|
| 22 | |
---|
| 23 | set DirName= |
---|
| 24 | rem ~ parameter "~" remove """ |
---|
| 25 | set argv1=%~1 |
---|
| 26 | if not defined argv1 goto :not_argv1_dirname |
---|
| 27 | if "%argv1:~0,1%" == "-" goto :not_argv1_dirname |
---|
| 28 | set DirName=%argv1% |
---|
| 29 | shift /1 |
---|
| 30 | :not_argv1_dirname |
---|
| 31 | |
---|
| 32 | rem ~ %* don't change with shift |
---|
| 33 | rem ~ on dos, there are only 9 max args |
---|
| 34 | set all_args=%1 %2 %3 %4 %5 %6 %7 %8 %9 |
---|
| 35 | |
---|
| 36 | rem ~ undefined parameters |
---|
| 37 | set DirSrc= |
---|
| 38 | set DirDest= |
---|
| 39 | set ParFile= |
---|
| 40 | |
---|
| 41 | rem ~ Default parameters |
---|
| 42 | set DirXnView=C:\Program Files\XnView |
---|
| 43 | set DirAlbum=F:\Album |
---|
| 44 | set DirFTP=C:\Docume~1\Ruben\Bureau\FTP |
---|
| 45 | set GlobalCvtOpt=-opthuff -i |
---|
| 46 | set ExtJPG=.JPG |
---|
| 47 | set ExtGIF=.GIF |
---|
| 48 | set HDCopy=Y |
---|
| 49 | set HDKeep=Y |
---|
| 50 | set HDNewName=% |
---|
| 51 | set HDQuality=80 |
---|
| 52 | set HDMaxW=0 |
---|
| 53 | set HDMaxH=0 |
---|
| 54 | set HDCvtOpt= |
---|
| 55 | set NormalQuality=80 |
---|
| 56 | set NormalMaxW=0 |
---|
| 57 | set NormalMaxH=350 |
---|
| 58 | set NormalCvtOpt= |
---|
| 59 | set TNPrefix=TN- |
---|
| 60 | set TNQuality=80 |
---|
| 61 | set TNMaxW=128 |
---|
| 62 | set TNMaxH=128 |
---|
| 63 | set TNCvtOpt=-rmeta |
---|
| 64 | |
---|
| 65 | rem ~ Read parameters |
---|
| 66 | set ParamFile=%~d0%~p0%~n0.Params.txt |
---|
| 67 | for /F "eol=; tokens=1,2* delims==" %%i in (%ParamFile%) do @set %%i=%%j |
---|
| 68 | |
---|
| 69 | rem ~ Loop on argv |
---|
| 70 | :loop_on_argv |
---|
| 71 | rem ~ parameter "~" remove """ |
---|
| 72 | set argv1=%~1 |
---|
| 73 | if not defined argv1 goto :not_argv1 |
---|
| 74 | rem ~ Bad Arguments |
---|
| 75 | if not "%argv1:~0,1%" == "-" goto :usage |
---|
| 76 | set opt_name=%argv1:~1% |
---|
| 77 | shift /1 |
---|
| 78 | rem ~ parameter "~" remove """ |
---|
| 79 | set argv1=%~1 |
---|
| 80 | rem ~ Bad Arguments |
---|
| 81 | if not defined argv1 goto :usage |
---|
| 82 | rem ~ Override parameters |
---|
| 83 | set opt_value=%argv1% |
---|
| 84 | shift /1 |
---|
| 85 | set %opt_name%=%opt_value% |
---|
| 86 | goto :loop_on_argv |
---|
| 87 | :not_argv1 |
---|
| 88 | |
---|
| 89 | rem ~ Override parameters - Read parfile |
---|
| 90 | if defined ParFile (for /F "eol=; tokens=1,2* delims==" %%i in (%ParFile%) do @set %%i=%%j) |
---|
| 91 | |
---|
| 92 | rem ~ if not Dirname and DirSrc and DirDest, done all directories |
---|
| 93 | if not defined DirName ( |
---|
| 94 | if not defined DirSrc ( |
---|
| 95 | if not defined DirDest goto :all_directories |
---|
| 96 | ) |
---|
| 97 | rem ~ if DirSrc or DirDest not defined |
---|
| 98 | rem ~ Bad Arguments |
---|
| 99 | if not defined DirSrc goto :usage |
---|
| 100 | if not defined DirDest goto :usage |
---|
| 101 | ) else ( |
---|
| 102 | rem ~ if DirSrc defined |
---|
| 103 | rem ~ Bad Arguments |
---|
| 104 | if defined DirSrc goto :usage |
---|
| 105 | ) |
---|
| 106 | |
---|
| 107 | |
---|
| 108 | rem ~ Define directory name |
---|
| 109 | rem ~ Expanded path contains short names only will defined after the directory was created |
---|
| 110 | if not defined DirSrc set DirSrc=%DirAlbum%\%DirName% |
---|
| 111 | if not defined DirDest set DirDest=%DirFTP%\%DirName% |
---|
| 112 | |
---|
| 113 | set DirPict=%DirDest% |
---|
| 114 | set DirHigh=%DirPict%\pwg_high |
---|
| 115 | set DirTN=%DirPict%\thumbnail |
---|
| 116 | |
---|
| 117 | rem ~ Directory name are convert to expanded path contains short names only |
---|
| 118 | rem ~ XnView don't like "dir name" with double quote |
---|
| 119 | for /F "tokens=*" %%i in ("%DirAlbum%") do set ExpandedDirAlbum=%%~si |
---|
| 120 | for /F "tokens=*" %%i in ("%DirFTP%") do set ExpandedDirFTP=%%~si |
---|
| 121 | |
---|
| 122 | echo. |
---|
| 123 | echo *** %DirSrc% *** |
---|
| 124 | |
---|
| 125 | rem ~ Check directory source |
---|
| 126 | if not exist "%DirSrc%" ( |
---|
| 127 | echo. |
---|
| 128 | echo Error: Source directories don't exist |
---|
| 129 | echo. |
---|
| 130 | goto :usage |
---|
| 131 | ) |
---|
| 132 | |
---|
| 133 | rem ~ Check directory Destination |
---|
| 134 | if not exist "%DirPict%" mkdir "%DirPict%" |
---|
| 135 | |
---|
| 136 | rem ~ Directory name are convert to expanded path contains short names only |
---|
| 137 | rem ~ XnView don't like "dir name" with double quote |
---|
| 138 | for /F "tokens=*" %%i in ("%DirSrc%") do set ExpandedDirSrc=%%~si |
---|
| 139 | for /F "tokens=*" %%i in ("%DirPict%") do set ExpandedDirPict=%%~si |
---|
| 140 | |
---|
| 141 | if /I "%ExpandedDirSrc%" == "%ExpandedDirPict%" ( |
---|
| 142 | echo. |
---|
| 143 | echo Error: Source and destination directories cannot be same |
---|
| 144 | echo. |
---|
| 145 | goto :usage |
---|
| 146 | ) |
---|
| 147 | |
---|
| 148 | if /I not %DelDestDir% == Y goto :end_DelDestDir |
---|
| 149 | echo. |
---|
| 150 | echo Deleting destination directories |
---|
| 151 | if exist "%DirPict%\*.*" del /Q /F /S "%DirPict%\*.*" |
---|
| 152 | if exist "%DirPict%" rmdir /Q /S "%DirPict%" |
---|
| 153 | :end_DelDestDir |
---|
| 154 | |
---|
| 155 | if /I not %HDCopy% == Y goto :convert_HD |
---|
| 156 | echo. |
---|
| 157 | echo Creating HD Pictures |
---|
| 158 | if exist "%DirSrc%\*%ExtJPG%" xcopy /F /R /I /H /C /Y "%DirSrc%\*%ExtJPG%" "%DirHigh%\*%ExtJPG%" |
---|
| 159 | if exist "%DirSrc%\*%ExtGIF%" xcopy /F /R /I /H /C /Y "%DirSrc%\*%ExtGIF%" "%DirHigh%\*%ExtGIF%" |
---|
| 160 | |
---|
| 161 | |
---|
| 162 | rem ~ -o filename : Output filename |
---|
| 163 | rem ~ Use # to specify position of numeric enumerator |
---|
| 164 | rem ~ Use % to specify source filename |
---|
| 165 | rem ~ Use $ to specify source folder |
---|
| 166 | |
---|
| 167 | rem ~ -out format : Output format name |
---|
| 168 | |
---|
| 169 | rem ~ -c value : Compression number (default : 0) |
---|
| 170 | rem ~ -q value : JPEG/PNG/FPX/WIC quality (default : 100) |
---|
| 171 | |
---|
| 172 | rem ~ -opthuff |
---|
| 173 | |
---|
| 174 | rem ~ -resize w h : Scale width-height |
---|
| 175 | rem ~ w h can be percent (ex: -resize 100% 200%) |
---|
| 176 | |
---|
| 177 | rem ~ -i : Interlaced GIF / Progressive JPEG |
---|
| 178 | |
---|
| 179 | :convert_HD |
---|
| 180 | echo. |
---|
| 181 | echo Convert HD Pictures |
---|
| 182 | if not exist "%DirHigh%" mkdir "%DirHigh%" |
---|
| 183 | rem ~ Directory name are convert to expanded path contains short names only |
---|
| 184 | rem ~ XnView don't like "dir name" with double quote |
---|
| 185 | for /F "tokens=*" %%i in ("%DirHigh%") do set ExpandedDirHigh=%%~si |
---|
| 186 | set HD_CVT_OPT=-q %HDQuality% %GlobalCvtOpt% %HDCvtOpt% -rtype linear -ratio -resize %HDMaxW% %HDMaxH% |
---|
| 187 | rem ~ Force Conversion for TIF |
---|
| 188 | if exist "%DirSrc%\*.TIF" "%DirXnView%\nconvert.exe" %HD_CVT_OPT% -out jpeg -o %ExpandedDirHigh%\%HDNewName%.WasTIF%ExtJPG% %ExpandedDirSrc%\*.TIF |
---|
| 189 | if %HDCopy% == Y goto :end_convert_HD |
---|
| 190 | if exist "%DirSrc%\*%ExtJPG%" "%DirXnView%\nconvert.exe" %HD_CVT_OPT% -out jpeg -o %ExpandedDirHigh%\%HDNewName%%ExtJPG% %ExpandedDirSrc%\*%ExtJPG% |
---|
| 191 | if exist "%DirSrc%\*%ExtGIF%" "%DirXnView%\nconvert.exe" %HD_CVT_OPT% -out gif -o %ExpandedDirHigh%\%HDNewName%%ExtGIF% %ExpandedDirSrc%\*%ExtGIF% |
---|
| 192 | :end_convert_HD |
---|
| 193 | rem ~ Execute high addon |
---|
| 194 | if exist "%HDAddOnFile%" ( |
---|
| 195 | echo Execute "%HDAddOnFile%" |
---|
| 196 | call "%HDAddOnFile%" %ExpandedDirHigh% HIGH |
---|
| 197 | ) |
---|
| 198 | |
---|
| 199 | echo. |
---|
| 200 | echo Creating Normal Pictures |
---|
| 201 | set NO_CVT_OPT=-q %NormalQuality% %GlobalCvtOpt% %NormalCvtOpt% -rtype linear -ratio -resize %NormalMaxW% %NormalMaxH% |
---|
| 202 | if exist "%DirHigh%\*%ExtJPG%" "%DirXnView%\nconvert.exe" %NO_CVT_OPT% -out jpeg -o %ExpandedDirPict%\%%%ExtJPG% %ExpandedDirHigh%\*%ExtJPG% |
---|
| 203 | if exist "%DirHigh%\*%ExtGIF%" "%DirXnView%\nconvert.exe" %NO_CVT_OPT% -out gif -o %ExpandedDirPict%\%%%ExtGIF% %ExpandedDirHigh%\*%ExtGIF% |
---|
| 204 | rem ~ Execute normal addon |
---|
| 205 | if exist "%NormalAddOnFile%" ( |
---|
| 206 | echo Execute "%NormalAddOnFile%" |
---|
| 207 | call "%NormalAddOnFile%" %ExpandedDirPict% NORMAL |
---|
| 208 | ) |
---|
| 209 | |
---|
| 210 | |
---|
| 211 | echo. |
---|
| 212 | echo Creating thumbnail Pictures |
---|
| 213 | if not exist "%DirTN%" mkdir "%DirTN%" |
---|
| 214 | rem ~ Directory name are convert to expanded path contains short names only |
---|
| 215 | rem ~ XnView don't like "dir name" with double quote |
---|
| 216 | for /F "tokens=*" %%i in ("%DirTN%") do set ExpandedDirTN=%%~si |
---|
| 217 | set TN_CVT_OPT=-q %TNQuality% %GlobalCvtOpt% %TNCvtOpt% -rtype linear -ratio -resize %TNMaxW% %TNMaxH% |
---|
| 218 | if exist "%DirHigh%\*%ExtJPG%" "%DirXnView%\nconvert.exe" %TN_CVT_OPT% -out jpeg -o %ExpandedDirTN%\%TNPrefix%%%%ExtJPG% %ExpandedDirHigh%\*%ExtJPG% |
---|
| 219 | if exist "%DirHigh%\*%ExtGIF%" "%DirXnView%\nconvert.exe" %TN_CVT_OPT% -out gif -o %ExpandedDirTN%\%TNPrefix%%%%ExtGIF% %ExpandedDirHigh%\*%ExtGIF% |
---|
| 220 | rem ~ Execute thumbnail addon |
---|
| 221 | if exist "%TNAddOnFile%" ( |
---|
| 222 | echo Execute "%TNAddOnFile%" |
---|
| 223 | call "%TNAddOnFile%" %ExpandedDirTN% THUMBNAIL |
---|
| 224 | ) |
---|
| 225 | |
---|
| 226 | |
---|
| 227 | echo. |
---|
| 228 | echo Creating index.php |
---|
| 229 | if not exist "%DirAlbum%\index.php" goto :noindex |
---|
| 230 | xcopy /F /R /I /D /H /C /Y "%DirAlbum%\index.php" "%DirPict%\" |
---|
| 231 | xcopy /F /R /I /D /H /C /Y "%DirAlbum%\index.php" "%DirTN%\" |
---|
| 232 | xcopy /F /R /I /D /H /C /Y "%DirAlbum%\index.php" "%DirHigh%\" |
---|
| 233 | goto :end_index |
---|
| 234 | :noindex |
---|
| 235 | echo No file "%DirAlbum%\index.php" =^> no copies |
---|
| 236 | goto :end_index |
---|
| 237 | :end_index |
---|
| 238 | |
---|
| 239 | echo. |
---|
| 240 | echo Keeping or deleting HD directory |
---|
| 241 | if /I not %HDKeep% == N goto :keep_HD |
---|
| 242 | if exist "%DirHigh%\*.*" del /S /Q /F "%DirHigh%\*.*" |
---|
| 243 | if exist "%DirHigh%" rmdir /Q "%DirHigh%" |
---|
| 244 | :keep_HD |
---|
| 245 | |
---|
| 246 | goto :end |
---|
| 247 | |
---|
| 248 | :all_directories |
---|
| 249 | echo. |
---|
| 250 | echo ************************************************************* |
---|
| 251 | echo * Apply %~n0 for all directories of %DirAlbum% |
---|
| 252 | echo ************************************************************* |
---|
| 253 | echo. |
---|
| 254 | pause |
---|
| 255 | for /F "tokens=*" %%i in ('dir /B /A:D "%DirAlbum%"') do cmd /c %0 "%%i" %all_args% |
---|
| 256 | |
---|
| 257 | |
---|
| 258 | goto :end |
---|
| 259 | |
---|
| 260 | :usage |
---|
| 261 | echo Error Bad Parameter |
---|
| 262 | echo Syntax: |
---|
| 263 | echo - All directories: %0 [-options] [-ParFile ^<File Name^>] |
---|
| 264 | echo - Selected Directory: %0 ^<Short Directory Name^> [-DirDest ^<Full Directory Path^>] [-options] [-ParFile ^<File Name^>] |
---|
| 265 | echo - Selected Directories src/dest: %0 -DirSrc ^<Full Directory Path^> -DirDest ^<Full Directory Path^> [-options] [-ParFile ^<File Name^>] |
---|
| 266 | echo. |
---|
| 267 | echo Key: |
---|
| 268 | echo - ^<Short Directory Name^> : Directory on Album directory |
---|
| 269 | echo - -DirSrc ^<Full Directory Path^> : Source directory |
---|
| 270 | echo Override computed Album directory name |
---|
| 271 | echo Cannot be used with ^<Short Directory Name^> |
---|
| 272 | echo - -DirDest ^<Full Directory Path^> : Destination directory |
---|
| 273 | echo Override computed FTP directory name |
---|
| 274 | echo - [-options] can be composed of all parameters defined in %ParamFile% |
---|
| 275 | echo Override parameters defined in %ParamFile% |
---|
| 276 | echo Each option is composed with 2 line arguments -^<parameter name^> and ^<parameter value^> |
---|
| 277 | echo Override before [-ParFile ^<File Name^>] |
---|
| 278 | echo - [-ParFile ^<File Name^>] : Full name of parameters file |
---|
| 279 | echo Override parameters defined in %ParamFile% |
---|
| 280 | echo Override after [-options] |
---|
| 281 | echo. |
---|
| 282 | echo Examples: |
---|
| 283 | echo %0 |
---|
| 284 | echo %0 -HDKeep N -TNQuality 70 |
---|
| 285 | echo %0 20050816 |
---|
| 286 | echo %0 20050816 -HDKeep N -TNQuality 70 |
---|
| 287 | echo %0 20050816 -DirDest c:\temp\FTP -HDKeep N -TNQuality 70 |
---|
| 288 | echo %0 -DirSrc c:\temp\test -DirDest c:\temp\testII -HDKeep N -TNQuality 70 |
---|
| 289 | |
---|
| 290 | :end |
---|