Folgende Codezeilen sind eine kleine Stapelverarbeitung, die jegliche “tif”-Bilder und Unterverzeichnisse einer Quell-Verzeichnisstruktur rekursiv auf einen Zielpfad abbildet. Die Konvertierung erledigt IrfanView. Wer Verbesserungsvorschläge hat und eine elegantere Lösungen unterbreiten möchte, kann ja einen Kommentar hinterlassen.
@echo off cls set IRFANVIEW=%ProgramFiles%\IrfanView\i_view32.exe set QUELLPFAD=C:\quellverzeichnis\bilder set ZIELPFAD=C:\zielverzeichnis\bilder set PARAMETER parameter=/resize_long=(200,0) /aspectratio /resample /aspectratio /jpgq=85 /killmesoftly FOR /r %QUELLPFAD% %%a IN (*.tif) DO ( @REM wenn das Verzeichnis "ZIELPFAD/Pfad %%a" nicht existiert, erstelle Verzeichnis if not exist %ZIELPFAD%%%~pa mkdir "%ZIELPFAD%%%~pa" @REM wenn die Zieldatei noch nicht existiert, dann IrfanView Convert ausführen if not exist "%ZIELPFAD%%%~pa%%~na.jpg" %IRFANVIEW% %%a %PARAMETER% /convert="%ZIELPFAD%%%~pa%%~na.jpg" )
August 6th, 2013 at 15:20
Hi Leute,
ich verwende auch das irfanview um tif in jpg umzuwandeln. ich mach es mit einem C# progrämmchen siehe unten.
Schöne Grüße
Ömer
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MediaConversion
{
// medapro daten als webfaehiges format umwandeln
class MediaConversion
{
public string sourcedir = @”C:\source”; // rootdir von medapro daten
public string irfan_main = “C:\\\”Program Files (x86)\”\\IrfanView\\”;
public string irfan_bin = “i_view32.exe”;
public string targetdir = @”C:\target”;
public string quelldateityp = “*.tif”;
public string targetdateityp = “*.jpg”;
public static void Main(string[] args)
{
MediaConversion mc = new MediaConversion();
mc.convert();
}
public void convert()
{
// changedirectory to irfan
this.convert(sourcedir, targetdir);
}
private void convert(string dir, string targetdir)
{
System.IO.DirectoryInfo di = new DirectoryInfo(dir);
DirectoryInfo[] subdirs = di.GetDirectories();
//in target anlegen wenn nötig
DirectoryInfo diTarget = new DirectoryInfo(targetdir);
if ( !diTarget.Exists ) {
diTarget.Create();
}
// Kommando erzeugen abschicken!
String command = irfan_bin + ” ” + di.FullName + “\\” + quelldateityp + ” /advancedbatch /convert=” + targetdir + “\\” + targetdateityp;
this.executeDos(command);
// Die subdirectorys
foreach (DirectoryInfo one in subdirs)
{
Console.WriteLine(one.FullName);
this.convert(one.FullName, targetdir + “\\” + one.Name);
}
}
public void executeDos(String command)
{
Console.WriteLine(“command: ” + command);
try
{
String lf = Environment.NewLine;
ProcessStartInfo psi = new ProcessStartInfo(“cmd.exe”)
{
UseShellExecute = false,
RedirectStandardInput = true
};
Process proc = new Process() { StartInfo = psi };
proc.Start();
proc.StandardInput.WriteLine(“cd ” + irfan_main );
proc.StandardInput.WriteLine(command + lf + “Exit”);
proc.WaitForExit();
proc.Close();
}
catch (Exception objException)
{
// Log the exception
Console.WriteLine(“Fehler beim Verarbeiten des Dos Befehls”);
}
}
}
}
August 10th, 2013 at 17:05
Klaro, ist auch eine Lösung!
Danke für den Code-Schnipsel :)