Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Dateien kopieren und konvertieren mit IrfanView per Batch

Frage Entwicklung Batch & Shell

Mitglied: Martin.S

Martin.S (Level 1) - Jetzt verbinden

11.05.2012, aktualisiert 10:21 Uhr, 5589 Aufrufe, 12 Kommentare

Hallo,

ich versuche mich gerade daran, die Konvertierung von *.bmp-Dateien in *.jpeg-Dateien mit IrfanView über eine Batch laufen zu lassen und bräuchte da ein bisschen Hilfe.

Wir haben hier mehrere *.bmp-Dateien, die übers Netzwerk transportiert werden sollen. Jede *.bmp-Datei ist etwa 5MB groß. Diese soll verkleinert werden, um Bandbreite zu sparen.

Über IrfanView kann man die Dateien in *.jpeg konvertieren. Die 5MB sind dann nur noch 290KB. Allerdings ist die Methode über die GUI von IrfanView ziemlich umständlich, deshalb möchte ich das über eine Batch machen. Den Befehl zum Konvertieren hab ich schon gefunden, für Dateien, die in einem Ordner liegen, funktioniert das auch.

Allerdings muss ich Dateien konvertieren und kopieren, einschließlich der Unterordner. Ich möchte im Zielordner die gleiche Ordnerstruktur wie im Quellordner anlegen.

Folgendes habe ich bereits:
01.
@echo off 
02.
@echo 
03.
set ziel="C:\users\xxx\Desktop\Test2" 
04.
set quelle="C:\xxx\Dokumente\Bilder" 
05.
set application="C:\Program Files (x86)\IrfanView\i_view32.exe" 
06.
 
07.
dir /b /s %quelle% > "C:\users\xxx\Desktop\files.txt" 
08.
@ECHO Datei erstellt. 
09.
 
10.
PAUSE 
11.
 
12.
echo %ziel% 
13.
echo %quelle% 
14.
 
15.
IF NOT EXISTS "%ziel%" MD "%ziel%" 
16.
 
17.
FOR %%f IN ("C:\users\xxx\Desktop\files.txt") DO ( 
18.
	IF NOT EXISTS "%ziel%\%%f" 
19.
20.
	"C:\Program Files (x86)\IrfanView\i_view32.exe" %quelle%\%%f /convert %ziel%*.jpeg 
21.
	robocopy /s "%quelle%\%%f" ""%ziel%\%%f"" 
22.
23.
 
24.
25.
rm "C:\users\xxx\Desktop\files.txt" 
26.
PAUSE
So wie ich das gelesen habe, kann ich das nicht über eine Do-While-Schleife laufen lassen. Die einzige Möglichkeit einer Rekursion ist also, die Dateien und Ordner auszulesen und in einer Liste zu speichern und dann in der For-Schleife diese Liste anzuarbeiten.

Allerdings steigt die Batch nach der Ausgabe, dass die Datei erstellt worden ist, aus und ich weiß nicht woran das liegt.

Ich bin für jede Hilfe dankbar.

Gruß
Martin

P.S.: Wie kann ich denn hier Code markieren?
Mitglied: Skyemugen
11.05.2012 um 10:15 Uhr
Aloha,

... guck doch mal in der Formatierungshilfe dort findest du auch <code></code> ...

Soso die Batch steigt also aus, na ob dir Zeile 1 dann eine Hilfe ist bei der Fehlersuche? Die Textdatei kannst du dir btw. auch sparen, wozu gibt es denn for /f

greetz André
Bitte warten ..
Mitglied: Martin.S
11.05.2012 um 10:31 Uhr
So, Code markiert.
Die erste Zeile habe ich so geändert, dass nun eine Ausgabe erscheint (@ECHO ON). Allerdings hilft mir das in meinem Fall nicht weiter: Lasse ich die Textdatei weg, wird die For-Schleife immer noch nicht durchlaufen. So weit müsste ich ja erstmal kommen ;)

Gruß
Martin
Bitte warten ..
Mitglied: Jochem
11.05.2012 um 10:58 Uhr
Moin,

welche Version von IrfanView benutzt Du? Bereits ab der 3.x-Version gab es den wunderbaren Menüpunkt "Batch-Konvertierung/Umbenennen". Und o Wunder, dort kann man BMPs in JPGs umwandeln und sogar vorgeben, wie groß das Ergebnis werden soll. Und zu allem Überfluß läßt sich das Ganze auch noch samt Unterverzeichnissen in einen anderen Zielordner kopieren. Funktioniert auf Knopfdruck und ist alles bereits mehrfach getestet unter Vers. 4.27.

Gruß J chem
Bitte warten ..
Mitglied: pieh-ejdsch
11.05.2012 um 11:06 Uhr
moin Martin,

Dafür gibt es auch schon einen Batch Dateigröße von Bildern per Batch anpassen?.

Der konvertiert und die Bildchen liegen dann in den Angegeben neuen Ordner.

Gruß Phil
Bitte warten ..
Mitglied: mak-xxl
11.05.2012 um 11:17 Uhr
Moin Martin,

und um doch erst einmal die obige Baustelle aufzuklaren, etwa so:

01.
@echo off & setlocal 
02.
set "ziel=C:\users\xxx\Desktop\Test2" 
03.
set "quelle=C:\xxx\Dokumente\Bilder" 
04.
set "application=C:\Program Files (x86)\IrfanView\i_view32.exe" 
05.
for /f "delims=" %%i in ('dir /b /s %quelle%\*.bmp') do %application% %%i /convert %ziel%\%%~ni.jpeg
Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: Martin.S
11.05.2012 um 12:49 Uhr
Zitat von mak-xxl:
Moin Martin,

und um doch erst einmal die obige Baustelle aufzuklaren, etwa so:

01.
> @echo off & setlocal 
02.
> set "ziel=C:\users\xxx\Desktop\Test2" 
03.
> set "quelle=C:\xxx\Dokumente\Bilder" 
04.
> set "application=C:\Program Files (x86)\IrfanView\i_view32.exe" 
05.
> for /f "delims=" %%i in ('dir /b /s %quelle%\*.bmp') do %application% %%i /convert %ziel%\%%~ni.jpeg 
06.
> 
Freundliche Grüße von der Insel - Mario

Hallo Mario,

vielen Dank, bis auf die Rekursion genau das was ich wollte. Leider werden hier in dem neuen Ordner die bestehenden Unterordner nicht mit angelegt. Das sollte ich aber, hoffentlich, alleine hinbekommen.

Danke Dir!

Gruß
Martin
Bitte warten ..
Mitglied: pieh-ejdsch
11.05.2012 um 13:41 Uhr
Hallo Martin,

das mit der Rekursion hatte ich übersehen. Mit hilfe eines Vorschau xcopy Vllt In etwa so.
01.
@echo off 
02.
setlocal disabledelayedexpansion 
03.
set "ziel=C:\users\xxx\Desktop\Test2" 
04.
set "quelle=C:\xxx\Dokumente\Bilder\*.bmp" 
05.
set application="C:\Program Files (x86)\IrfanView\i_view32.exe" 
06.
 
07.
for /f delims^= %%i in ('xcopy /flis "%quelle%" "%ziel%" ^|findstr /vb [0-9] ') do (set "File=%%i" 
08.
  setlocal enabledelayedexpansion 
09.
  for /f "tokens=1,2delims=?" %%j in ("!File: -> =?!" ) do endlocal & %application% "%%~j" /convert "%%~dpnk.jpeg" 
10.
)
Gruß Phil
Bitte warten ..
Mitglied: mak-xxl
11.05.2012 um 14:22 Uhr
Moin Martin,

... Leider werden hier in dem neuen Ordner die bestehenden Unterordner nicht mit angelegt.

Wenn Du den kompletten Quellpfad unter dem Zielpfad wiederfinden willst (mit obigen Einschränkungen), dann änderst Du Zeile 5 so ab:

for /f "delims=" %%i in ('dir /b /s /a:-d %quelle%\*.bmp') do %application% "%%i" /convert "%ziel%\%%~pni.jpeg"
Soll der Quellpfad ab '\Bilder' im Zielpfad auftauchen, dann etwa so:

01.
@echo off & setlocal enabledelayedexpansion 
02.
set "ziel=C:\users\xxx\Desktop\Test2"  
03.
set "quelle=C:\users\xxx\Dokumente\Bilder"  
04.
set "application=C:\Program Files (x86)\IrfanView\i_view32.exe"  
05.
for /f "delims=" %%i in ('dir /b /s /a:-d %quelle%') do ( 
06.
    set "pfad=%%~pni" 
07.
    set "pfad=!pfad:\users\xxx\Dokumente=!" 
08.
    "%application%" "%%i" /convert "%ziel%!pfad!.jpeg" 
09.
)
Zeile 7 lässt sich weniger 'hardcoded' darstellen, wenn die Pfadangaben zu Beginn des Scriptes feiner granuliert werden.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: Martin.S
11.05.2012 um 15:05 Uhr
Hallo Mario,

ich habe mir zum Testen mal einen Ordner mit zwei Unterordnern gebaut. In jedem Unterordner sind *.bmp-Dateien drinnen. Den Zielordner gibt es noch nicht (Wird ein Ordner auf meinem Desktop). Wenn ich Deine Batch ausführe, konvertiert diese die Dateien auch brav in den neu angelegten Ordner, allerdings werden keine Unterordner angelegt, sondern alle Dateien in die root des neuen Ordners konvertiert.

@phil: Danke für Deine Mühe, aber bei mir funktioniert die Batch nicht - weiß der Geier, warum nicht...
(Pfade natürlich angepasst ;) )

Gruß
Martin
Bitte warten ..
Mitglied: pieh-ejdsch
11.05.2012 um 17:43 Uhr
Hallo Martin,

hast Du bei Quelle auch die Dateimaske mit angegeben?
Bei mir tut der Batch was er soll.

@Mario -da kannste auch Zeile 7 und 8 verschmelzen
01.
    "%application%" "%%i" /convert "!pfad:%quelle%=%ziel%!.jpeg"
Gruß Phil
Bitte warten ..
Mitglied: mak-xxl
11.05.2012 um 19:02 Uhr
Moin Phil,

hier mal ein Screen-Dump davon, was dann passiert:

Quelle C:\users\xxx\Dokumente\Bilder 
Ziel   C:\users\xxx\Desktop\Test2 
 
1.    set "pfad1=%%~pni" 
      set "pfad1=!pfad1:\users\xxx\Dokumente=!" 
      echo 1. "%ziel%!pfad1!.jpeg" 
 
2.    set "pfad2=%%~pni" 
      set "pfad2=!pfad2:%quelle%=%ziel%!" 
      echo 2. "%ziel%!pfad2!.jpeg" 
 
1. "C:\users\xxx\Desktop\Test2\Bilder\1.jpeg" 
2. "C:\users\xxx\Desktop\Test2\users\xxx\Dokumente\Bilder\1.jpeg"
Kein Tauschwillen erkennbar ... (siehe Unterschied Quell- und Zielpfad)

Ein schönes Wochenende und freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: pieh-ejdsch
12.05.2012 um 12:50 Uhr
Moin Mario,

das geht natülich nur, wenn der Vollständige Pfad in der Variable "pfad" ist.
Du nimmst ja kein Laufwerk mit in die Variable auf. zu spät gesehn
Sonst kannst Du auch auf diese Extraschnippelei verzichten.

Dabei ist auch völlig egal ob Du in Quelle: "users" schreibst oder "USERS"
Die Auflistung erfolgt nach der Schreibweise.

Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Batch & Shell
Nur aktuelle Dateien kopieren (3)

Frage von icke.hausen zum Thema Batch & Shell ...

Batch & Shell
gelöst Script: Dateien kopieren, Benamung anhang von Attributen (4)

Frage von Flexxa zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...