Toon posts:

[Dos] automatisch fotos resizen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier een code gemaakt voor het creeren van een zooi kleinere fotos van fotos die in een bepaalde map staan. Dit werkt dan ook. Alleen moet hij nu die map bekijken en sorteren op naam en dan de eerste de naam 001.jpg - 999.jpg geven. Dit laatste wil niet lukken, hij vind die variable niet waar ie de bestandsnaam mee maakt.

Weet iemand wat ik fout doe?

code:
1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF

cd C:\Program Files\ImageMagick\images

SET Aantal = 001

for %%f in (*.jpg) do convert "%%f" -geometry 227x227 "%Aantal%"
set Aantal = %Aantal% + 1
goto :eof

pause

[ Voor 4% gewijzigd door Verwijderd op 18-07-2005 18:58 ]


  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Jij denkt kennelijk dat je for statement voor meerdere regels geldt.
Da's niet het geval. Je saved al je plaatjes als 001.jpg, dus je eindigt met maar 1 geresized plaatje.
Bovendien kan er niet gerekend worden met omgevingsvariabelen dus SET AANTAL = %AANTAL% + 1 levert "001 + 1" op (en de volgende keer "001 + 1 + 1" etc. )

Ik zou 't in VBScript oplossen
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Aantal = 0
For Each objFile In CreateObject ( "Scripting.FileSystemObject" ).GetFolder ( WScript.Arguments ( 0 ) ).Files

    If InStr ( LCase ( objFile.name ), ".jpg" ) Then

        Aantal = Aantal + 1
        CreateObject ( "WScript.Shell" ).exec ( "convert objFile.name -geometry 227x227 Aantal" )

    End If

Next 'objFile
Moe je nog wat kunstjes doen om die voorloopnullen te krijgen

QnJhaGlld2FoaWV3YQ==


Verwijderd

Topicstarter
Nja ik kan helemaal geen vbscript vandaar, me kennis hierin haalde ik uit php. Helaas dan maar, dan rename ik ze zelf wel.

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 08:12

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

For /F %%A in ('dir /b /od') do echo %%A

Bovenstaande regel geeft een Echo van alle bestandsnamen in de huidige directory. In plaats van echo kun je opgeven wat je maar wilt wat er met de variabele gebeurt. "Dir /b /od" geeft een dir, met alleen bestandsnamen (/b), gesorteerd op bestandsnaam (/on).

Als je wilt gaan rekenen met het set commando zul je de optie "/A" meegeven. Pas dan wordt het als een vergelijking beschouwd. Bv.

SET /A aantal=%aantal% + 1 (ingetikt op prompt geeft dit:)
code:
1
2
3
4
5
6
H:\>set aantal=1

H:\>set /A aantal=%aantal% + 1
2
H:\>set /A aantal=%aantal% + 1
3
Zie ook SET /?

Het makkelijkste zou je alles in een kleine lus kunnen gooien:
code:
1
2
3
4
5
6
7
8
9
SET aantal=0
For /F %%A in ('dir /b /od') do call :task %%A
GOTO END

:task
set /a aantal=%aantal%+1
rename %1 %aantal%.jpg

:END


Bovenstaand hernoemt alle bestanden in je huidige directory naar 1.jpg en oplopend. Door veel te spelen met het SET commando zijn de voorloopnullen wel te realiseren.

[ Voor 14% gewijzigd door Question Mark op 19-07-2005 14:19 ]

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B