Batch Schleife funktioniert nicht
Hallo,
ich habe ein Konsolen-Programm gefunden, welches u.A. Fotos verkleinern kann...
Das Programm heißt nconvert.
Nun habe ich eine kleiner Batch Datei erstellt, welche Fotos von einem Ordner in einen anderen kopiert.
Nun möchte ich eine kleine Schleife bauen, damit jedes Foto um 50% verkleinert wird.
Hier der Quellcode:
for /F "tokens=1,2,3 delims=/." %%a in ('date/t') do set date2=%%a-%%b-%%c
set path="C:\!!temp\Fotos verkleinern"
set quelle="C:\!!temp\Fotos verkleinern\1"
set ziel="C:\!!temp\Fotos verkleinern\Fotos"
set neu="C:\!!temp\Fotos verkleinern\Fotos\%date2%"
for %%f in (%neu%\*.jpg) do ("C:\!!temp\Fotos verkleinern\nconvert.exe" -rflag orient -resize 50%% 50%% %%f -o %%f.jpg)
Was ist daran falsch?
[Edit Biber] Beitrag von "Windows" nach "Batch & Shell" verschoben wegen dieser Andeutung des Verfassers im Titel. [/Edit]
ich habe ein Konsolen-Programm gefunden, welches u.A. Fotos verkleinern kann...
Das Programm heißt nconvert.
Nun habe ich eine kleiner Batch Datei erstellt, welche Fotos von einem Ordner in einen anderen kopiert.
Nun möchte ich eine kleine Schleife bauen, damit jedes Foto um 50% verkleinert wird.
Hier der Quellcode:
for /F "tokens=1,2,3 delims=/." %%a in ('date/t') do set date2=%%a-%%b-%%c
set path="C:\!!temp\Fotos verkleinern"
set quelle="C:\!!temp\Fotos verkleinern\1"
set ziel="C:\!!temp\Fotos verkleinern\Fotos"
set neu="C:\!!temp\Fotos verkleinern\Fotos\%date2%"
for %%f in (%neu%\*.jpg) do ("C:\!!temp\Fotos verkleinern\nconvert.exe" -rflag orient -resize 50%% 50%% %%f -o %%f.jpg)
Was ist daran falsch?
[Edit Biber] Beitrag von "Windows" nach "Batch & Shell" verschoben wegen dieser Andeutung des Verfassers im Titel. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102621
Url: https://administrator.de/forum/batch-schleife-funktioniert-nicht-102621.html
Ausgedruckt am: 23.12.2024 um 16:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo MrVain!
Vorweg: Die Pfade solltest Du anders festlegen (insbes ist es nicht ratsam, die Systemvariable %path% für andere Zwecke zu "missbrauchen") - etwa so:
Damit Deine letzte Zeile funktionieren kann, müssen sich zunächst einmal überhaupt Dateien in %neu% befinden - ist das der Fall (und wie sind sie dort hin gekommen)?
Da (auf jeden Fall) der Pfad Leerzeichen enthält, muss %%f unter Anführungszeichen gesetzt werden.
Zusätzlich müsste sichergestellt sein, dass "nconvert" als Output-Parameter Pfade (und nicht nur Dateinamen) akzeptiert.
Dass die verkleinerten Bilder schließlich "Name.jpg.jpg" hießen, ist vermutlich auch nicht beabsichtigt ...
Grüße
bastla
P.S.: Ist vielleicht Geschmackssache, aber ich würde das Datum eher im Format "JJJJ-MM-TT" zusammensetzen - erleichtert im Fall des Falles eine Sortierung ...
Vorweg: Die Pfade solltest Du anders festlegen (insbes ist es nicht ratsam, die Systemvariable %path% für andere Zwecke zu "missbrauchen") - etwa so:
for /F "tokens=1,2,3 delims=/." %%a in ('date/t') do set date2=%%a-%%b-%%c
set "pfad=C:\!!temp\Fotos verkleinern"
set "quelle=%pfad%\1"
set "ziel=%pfad%\Fotos"
set "neu=%pfad%\Fotos\%date2%"
Da (auf jeden Fall) der Pfad Leerzeichen enthält, muss %%f unter Anführungszeichen gesetzt werden.
Zusätzlich müsste sichergestellt sein, dass "nconvert" als Output-Parameter Pfade (und nicht nur Dateinamen) akzeptiert.
Dass die verkleinerten Bilder schließlich "Name.jpg.jpg" hießen, ist vermutlich auch nicht beabsichtigt ...
Grüße
bastla
P.S.: Ist vielleicht Geschmackssache, aber ich würde das Datum eher im Format "JJJJ-MM-TT" zusammensetzen - erleichtert im Fall des Falles eine Sortierung ...
Hallo MrVain!
Ansonsten noch eine weitere Überlegung: Wo sollen die verkleinerten Bilder gespeichert werden? Derzeit wäre das im Ordner "%neu%" unter dem (etwas ungewöhnlichen) Name "Bildname.jpg.jpg" ...
Grüße
bastla
Ich meine, dass nconvert kein Inhalt eines Ordners auslesen kann,
Meine Frage ging eher in die Richtung, ob "nconvert" bei der Ausgabe nur den Dateinamen verwenden kann, oder ob auch ein Pfad der Art "C:\!!temp\Fotos verkleinern\Fotos\%date2%\Bildname.jpg.jpg" akzeptiert wird.Ansonsten noch eine weitere Überlegung: Wo sollen die verkleinerten Bilder gespeichert werden? Derzeit wäre das im Ordner "%neu%" unter dem (etwas ungewöhnlichen) Name "Bildname.jpg.jpg" ...
Grüße
bastla
@bastla
@MrVain
für den Rest der mitratenden Gemeinde wäre es ganz hilfreich, wenn Du bitte mal die Parameter-Optionen von "Deiner" NConvert.exe hier postest.
Vielleicht lässt sich die ja mit
Grüße
Biber
...unter dem (etwas ungewöhnlichen) Name "Bildname.jpg.jpg" ...
Vielleicht sind es ja Bilder von einem HipHop-Festival... lass Ihm doch seinen Spaß.@MrVain
für den Rest der mitratenden Gemeinde wäre es ganz hilfreich, wenn Du bitte mal die Parameter-Optionen von "Deiner" NConvert.exe hier postest.
Vielleicht lässt sich die ja mit
NConvert /?
aufrufen und zeigt dann alle dokumentierten Parameter?Grüße
Biber
Hallo MrVain!
Falls Du nur alle Bilder aus dem Ordner "C:\!!!temp\Fotos" verkleinert in "C:\!!!temp\Verkleinert" kopieren wolltest, sollte
genügen.
Was "nconvert" nicht zu mögen scheint, ist, wenn der Quellpfad unter Anführungszeichen gesetzt ist - daher sollte
noch funktionieren, aber
leider nicht. Wenn allerdings die Bilder direkt von der Kamera kommen sollen, wird der Quellpfad wohl ohnehin keine Leerzeichen enthalten.
Grüße
bastla
Falls Du nur alle Bilder aus dem Ordner "C:\!!!temp\Fotos" verkleinert in "C:\!!!temp\Verkleinert" kopieren wolltest, sollte
nconvert -rflag orient -resize 50%% 50%% -o C:\!!!temp\Verkleinert\%%.jpg C:\!!!temp\Fotos\*.jpg
Was "nconvert" nicht zu mögen scheint, ist, wenn der Quellpfad unter Anführungszeichen gesetzt ist - daher sollte
nconvert -rflag orient -resize 50%% 50%% -o "C:\!!!temp\Verkleinert\%%.jpg" C:\!!!temp\Fotos\*.jpg
nconvert -rflag orient -resize 50%% 50%% -o C:\!!!temp\Verkleinert\%%.jpg "C:\!!!temp\Fotos\*.jpg"
Grüße
bastla