Beispiele

beliebige Datei in ico verwandeln

convert2ico

@echo off
Set irfan=B:\Software\_graphik\Irfan\i_view32.exe 
set file=%1
FOR /f "delims=" %%f IN (%file%) DO (%irfan% "%%f" /convert="%%~df%%~pf%%~nf.ico")

Bild um 180° drehen und unter selben Namen speichern, wie bisher

mit irfanView Dateien um 180* drehen

@echo off
Set irfan=B:\Software\_graphik\Irfan\i_view32.exe 
set file=%1
FOR /f "delims=" %%f IN (%file%) DO %irfan% "%%f" /rotate_r /rotate_r /convert="%%f"

Anmerkung: Für jpg gibt es eine sehr einfache Alternative JPEGTRAN.EXE und eine Reihe anderer Programme, die lossless JPGs rotieren. [Zum technischen Hintergrund siehe hier]. Der Code einer solchen Batch-Datei würde folgendermaßen aussehen:

Bach jpg verlustfrei um 180° drehen

@echo off
Set jpgtran=B:\Software\_graphik\JpgCrop\jpegtran.exe 
set file=%1
FOR /f "delims=" %%f IN (%file%) DO %jpgtran% -rotate 180 "%%f" "%%f"

Und als vbs-Script [Achtung: funktioniert unter dem 64bit Windows 7 derzeit nicht – ist aber ein bekannter Fehler

rotate

(c) Erhard Rainer - www.erhard-rainer.com
' HISTORY:
' 0.1 - 28.03.2009 - Basisskript
' 0.2 - 28.12.2009 - kleine Fehlerbehebungen
' ---------------------------- CONFIGURATION ----------------------------
 
' ------------------------------ DECLARATION ------------------------------
Dim fso, objDatei, strLine, objFolder, bFolder, strGrad, oFile, Dateiname
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso = CreateObject("Scripting.FileSystemObject") 
' ---------------------------- USED FUNCTIONS ----------------------------
 
' ---------------------------- USED PROCEDURES ----------------------------
 
' ------------------------------- ARGUMENTS -------------------------------
'Standardwert für Drehung festlegen
strGrad = "180"

'einzelne übergebene Parameter auslesen
Set objArgs = WScript.Arguments
For Each objArg in objArgs
    msgbox objArg
    length = instr(objArg,":")
    Select Case left(objArg,instr(objArg,":"))
      Case LCase("/zielordner:")
        strFolder = right(objArg,len(objArg)-length)
      Case LCase("/dateiliste:")
        strFile = right(objArg,len(objArg)-length)
      Case LCase("/grad:")
        strGrad = right(objArg,len(objArg)-length)
    End Select 
next 
' -------------------------------- SCRIPT --------------------------------
 'abschließendes "\" im Ordner prüfen
 if  right(strFolder,1) <> "\" then strFolder = strFolder & "\"
 'Überprüfen, ob die Datei existiert
if Fso.fileexists(strfile) = False then 
    msgbox "2"
    Call Fehlerbehandlung("File",strFile)
end if 
' Prüfen, ob der Zielordner existiert
bFolder = True 
if fso.folderexists(strfolder) = False then 
    bFolder = False
end if 
 
 ' Datei mit den Dateinamen auslesen
Set objDatei = fso.OpenTextFile(strFile, ForReading)
Do until objDatei.AtEndOfStream 'Wiederhole, bis am Ende der Datei angelangt
   strLine=objDatei.ReadLine
    if Fso.fileexists(strLine) = True then 
        if bFolder = False then 'im Ausgangsordner die Datei überschreiben
            call Drehen(strLine,strLine,strGrad)
        else
            'Dateinamen  aus strLine extrahieren
            Set oFile = fso.GetFile(strLine)
            Dateiname = fso.GetFileName(oFile)
            call Drehen(strLine,strFolder & Dateiname ,strGrad)
        end if
    else
        WScript.Echo strLine & "(Datei nicht gefunden)"
    end if 
Loop
objDatei.Close
Set fso = nothing
Set oFile = nothing 
Set objDatei = nothing
Set objFolder = nothing
WScript.Echo "Ordner erstellt"

' -------------------------------- ERRORS --------------------------------
Sub Fehlerbehandlung(strFehler,strtmp)
if strFehler = "File" then 
    WScript.Echo "Die Datei " & strtmp & " konnte nicht gefunden werden"
elseif strFehler = "Folder" then 
    WScript.Echo "Der Ordner " & strtmp & " konnte nicht gefunden werden"
end if 
Wscript.Echo "usage: rotate.vbs /zielordner:<Folder> /dateiliste:<Datei> /Grad:[90|180|270 usw]"
wscript.Quit    
End Sub


Sub Drehen(origImg,newImg,Grad)
    Dim img, msgs
    Set img = CreateObject("ImageMagickObject.MagickImage.1")
    msgs = img.Convert(origImg, "-rotate", 180, newImg)
    Set img = Nothing 
end sub

Anmerkung: Falls es zum Runtim Error “0x800A01AD” kommt regsvr32 <pfad>\ImageMagickObject.dll ausführen. Selbiges gilt, wenn beim SimpleTest.vbs (C:\Program Files\<Pfad>\ImageMagickObject\Tests\) Script der Fehler 424: Object required bzw. 424: Objekt erforderlich gemeldet wird.  Sofern man ImageMagick unter VBA oder VBScript verwenden möchte, ist es sehr wichtig, dass “Install ImageMagickObject OLE Control for VBScript, Visual Basic, and WSH” markiert ist. [Die äußerst kurze offizielle Einführung]

Links

Icon

rotate(vbs,bat).rar 1.63 KB 402 downloads

...