jamesduttels
Goto Top

Frage zur Größenänderung und fortlaufenden Nummerierung von Bildern

Guten Tag,

wie oben schon beschrieben möchte ich eine Größenänderung bei meinen Bildern durchführen und daraufhin sollen sie fortlaufend nummeriert werden. Dafür habe ich mir die Tools nconvert und any#rename zur Hilfe geholt.

Mit ein paar Beispielen habe ich darauf hin eine Batch entwickelt, welche Bilder aus dem Ordner "new" in zwei verschiedene Größen umwandelt und daraufhin in zwei verschiedene Ordner kopiert, wo sie dann umbenannt werden sollen. Die Batch ließt außerdem zuvor den vorhanden Counter aus.
--> soweit alles ok.

Nun kommt mein Problem die großen Bilder werden fortlaufend mit 00001, 00002 usw. nummeriert. Zur Probe ob das Auslesen des Counters funktioniert, habe ich immer 7 Bilder in den Ordner "new" hereingepackt und sie umgewandelt. Nach zweimal bin ich bei 00014 gelandet - funktioniert.
Als ich jedoch nochmal 7 Bilder umwandeln wollte, kam ich nicht bei 21 sondern bei 00019 raus. Das heisst das Bilder die vorher im Ordner waren überschrieben wurden.

Nach meiner Recherche hat es irgendwas mit dem Octalsystem zu tun. Ich konnte jedoch die Erklärungen zur Beseitigung des Problems nicht umsetzten. face-smile

Deshalb: Wie bekomme ich es hin meine Bilder fortlaufend ohne Überschreibungen zu Nummerieren?

Vielen Dank für eure Hilfe.


Hier mein Batchtext:


rem ----------------------------------------------------------------------
:: CONFIG
rem ----------------------------------------------------------------------

:: directory path of NCONVERT
set NCONVERT=..\nconvert.exe

:: name of subdirectory where the images will be created.
:: no slashes, please - mkdir doesn't like it.
set subdir=..\finish

:: parameters for NCONVERT (image size + quality + outputfile)
:: set PARAMS1=-resize 800 600 -q 100 -o "..\%subdir%\800x600_%%.jpg"
set PARAMS1=-resize 400 300 -q 100 -o "%subdir%\%%.jpg"
set PARAMS2=-resize 100 75 -q 100 -o "%subdir%\t_%%.jpg"


:: STOP - thats all to configure

set LINE=-------------------------------------------------------------------------------


rem ----------------------------------------------------------------------
:: before we start: some checks...
rem ----------------------------------------------------------------------

echo %LINE%
echo create pictures 4 web - V1.1
echo %LINE%

if exist %NCONVERT% goto CHECKPARAM
goto ERROR01

:CHECKPARAM
if "%1"=="" goto USAGE

:CHECKINFILE
if exist %1 goto COPY
goto ERROR02


rem ----------------------------------------------------------------------
:: let's go!
rem ----------------------------------------------------------------------

:COPY
echo -- creating directory "%subdir%" ...
mkdir %subdir% >nul
:: copy %1 %subdir%
:: cd %subdir%

echo -- converting with [%PARAMS1%]
%NCONVERT% %PARAMS1% %1

echo -- converting with [%PARAMS2%]
%NCONVERT% %PARAMS2% %1
cd..
mkdir thumbnails
copy "finish\t_*.jpg" "thumbnails"
cd thumbnails
del ..\finish\t_*.jpg


:Counter wird ermittelt
@for /f "delims=. " %%i IN ('Dir /B /ON "..\view\*.jpg"') DO set Counter= %%i


:Counter wird erhöht
Set /a nz = %Counter%+1

cd ..
:anyrename wird Kopiert
Copy /y "any#rename.exe" "thumbnails"
Copy /y "any#rename.exe" "finish"


:Quell-Verzeichnis wird angewählt und Nummerierung durchgeführt
cd thumbnails
any#rename *.jpg t_ %nz% .jpg
cd ..\finish
any#rename *.jpg "" %nz% .jpg

cd ..
:Dateien werden auf Ziel kopiert
Copy /y "finish\*.jpg" "view"
mkdir small
Copy /y "thumbnails\*.jpg" "small"


rmdir finish /s /q
rmdir thumbnails /s /q
del new\*.jpg /s /q
del thumbnails\*exe /s /q


echo %0 was terminated.
echo press any key...
pause >nul
echo %LINE%


goto ENDE


rem ----------------------------------------------------------------------
:: errors
rem ----------------------------------------------------------------------

:ERROR01
echo ERROR:
echo The following executable was not found:
echo %NCONVERT%
echo Correct the path please - therefore edit the following file:
echo "%0"
goto USAGE

:ERROR02
echo ERROR: The file "%1" was not found!
goto USAGE

:USAGE

echo.
echo SYNTAX: %0 [imagefile(s)]
echo press any key...
pause >nul
exit 1


rem ----------------------------------------------------------------------
:: the end of all
rem ----------------------------------------------------------------------

Content-Key: 163872

Url: https://administrator.de/contentid/163872

Printed on: April 19, 2024 at 14:04 o'clock

Member: dan0ne
dan0ne Apr 03, 2011 at 18:26:57 (UTC)
Goto Top
Abend,

schau dir mal irfanview an.

Gruss
Member: JamesDuttels
JamesDuttels Apr 03, 2011 at 18:35:08 (UTC)
Goto Top
Jo, ich weis das irfanview das kann aber ich will programmunabhängig sein. Bei der Batch drück ich nur auf start und alles ist vorprogrammiert. face-smile
Member: bastla
bastla Apr 03, 2011 at 18:37:45 (UTC)
Goto Top
Hallo JamesDuttels und willkommen im Forum!

Wenn die Nummer immer 6 Stellen hat, versuch es mit diesen beiden Zeilen:
set /a nz=1%Counter%+1
set /a nz-=1000000
- gleichwertig wäre natürlich:
set /a nz=1%Counter%+1-1000000
oder gleich
set /a nz=1%Counter%-999999
Grüße
bastla

P.S.: So richtig "programmunabhängig" ist es aber auch nicht, wenn Du "nconvert" und "any#rename" benötigst ...

[Edit] Schreibweise der Zeile 2 etwas verkürzt [/Edit]
Member: JamesDuttels
JamesDuttels Apr 03, 2011 at 18:56:41 (UTC)
Goto Top
Hallo bastla,

danke für die schnelle Antwort ... funktionieren aber alle 3 Varianten nicht sorry face-confused

Fehler: thirt argument musst be a number
Member: bastla
bastla Apr 03, 2011 at 19:04:55 (UTC)
Goto Top
Hallo JamesDuttels!

Bei näherer Betrachtung überrascht das dann doch weniger - in Deinen "set"-Anweisungen gibt es unnötige Leerzeichen; ändere daher die Zeile
@FOR /f "delims=. " %%i IN ('Dir /B /ON "..\view\*.jpg"') DO set Counter= %%i
auf
@FOR /f "delims=. " %%i IN ('Dir /B /ON "..\view\*.jpg"') DO set Counter=%%i
damit nicht am Beginn des Variableninhaltes ein Leerzeichen steht (am Ende wär's auch unnötig, aber in diesem Fall egal) ...

Grüße
bastla
Member: JamesDuttels
JamesDuttels Apr 03, 2011 at 19:09:24 (UTC)
Goto Top
Wahnsinn! Ich danke dir, das wars!

Funktioniert alles super, danke nochmal für die schnelle Antwort face-smile

Schönen "Restsonntag" noch
JamesDuttels