Die Dateigrössen aus Verschiedenen Verzeichnissen auslesen
Mit ImageMagick komprimiere ich alle z.b *jpg Grafiken/Bilder in einem Verzeichnis
und verteile diese auf verschiedene Verzeichnisse.
(je nach dem Komprimierungslevel mit gleichem Namen)
Jetzt hätte ich gerne eine Batch-Datei gebastelt, welche mir den Dateinamen und
die entsprechenen Dateigrössen in Bytes ausliest und in die "augabe.txt" schreibt.
Trotz vielem Ueben schaffe ich es aber nicht, die Variabeln aus dem Unteraufruf
"call :im" zurückzugeben...
Das Ergebniss sollte dann so Ausehen:
"DateiName.jpg:30553:123456:56733:78000"
die entsprechenen Dateigrössen in Bytes ausliest und in die "augabe.txt" schreibt.
Trotz vielem Ueben schaffe ich es aber nicht, die Variabeln aus dem Unteraufruf
"call :im" zurückzugeben...
@echo off
set "Filter=org\*.jpg"
set "outTxT=ausgabe.txt"
IF exist %outTxT% del %outTxT%
FOR /R %%f in (%Filter%) do set name=%%~nf%%~xf& call :im& echo "%%~nf%%~xf:%%~zf:%bgA%:%bgB%:%bgC%">>%outTxT%
goto :EOF
:im
set "Filter2=im70\%name%"
FOR %%g in (%Filter2%) do set bgA=%%~zg
set "Filter3=im60\%name%"
FOR %%h in (%Filter3%) do set bgB=%%~zh
set "Filter4=im50\%name%"
FOR %%i in (%Filter4%) do set bgC=%%~zi
goto :EOF
PAUSE
goto :EOF
Das Ergebniss sollte dann so Ausehen:
"DateiName.jpg:30553:123456:56733:78000"
Please also mark the comments that contributed to the solution of the article
Kommentar vom Moderator Biber am Nov 02, 2009 um 17:55:17 Uhr
Die Dateigrössen aus Verschiedenen Verzeichnissen auslesen
...um nicht zu sagen "Die Dateigrössen aus kürzlich Verschiedenen Verzeichnissen auslesen"...Content-Key: 128449
Url: https://administrator.de/contentid/128449
Printed on: April 24, 2024 at 01:04 o'clock
7 Comments
Latest comment
Hallo UZehnder und willkommen im Forum!
Ungetestet etwa so:
Die jeweiligen "
Es spräche auch nichts dagegen, immer die selbe Laufvariable anstelle von "%%g", "%%h" und "%%i" zu verwenden ...
Grüße
bastla
Ungetestet etwa so:
@echo off & setlocal
set "Filter=org\*.jpg"
set "outTxT=ausgabe.txt"
If exist "%outTxT%" del "%outTxT%"
FOR /R %%f in (%Filter%) do set "name=%%~nxf" & call :im %%~zf
goto :eof
:im
set "Filter2=im70\%name%"
for %%g in (%Filter2%) do set bgA=%%~zg
set "Filter3=im60\%name%"
for %%h in (%Filter3%) do set bgB=%%~zh
set "Filter4=im50\%name%"
for %%i in (%Filter4%) do set bgC=%%~zi
echo "%name%:%1:%bgA%:%bgB%:%bgC%">>%outTxT%
goto :eof
set
"-Zeilen für "Filter2", "Filter3" und "Filter4" kannst Du eigentlich einsparen, wenn Du die Variablen nur einmalig in der folgenden Zeile benötigst - dann würde genügen:for %%g in (im70\%name%) do set bgA=%%~zg
Grüße
bastla
Hallo UZehnder!
Grüße
bastla
P.S.: Falls auch Dir die von mir verwendete Darstellung (des Batches) besser gefallen sollte: (lässt sich sogar nachträglich anwenden )
gäbe es eine Möglichkeit, das letzte Komma wegzulassen
Soferne Du das allerletzte Komma meinst, etwa so (weiterhin ungetestet ):@echo off & setlocal
set "Filter=org\*.jpg"
set "outTxT=ausgabe.js"
If exist "%outTxT%" del "%outTxT%"
set "Zeile="
echo var bildervergleich = [>%outTxT%
FOR /R %%f in (%Filter%) do set "name=%%~nxf"& call :im %%~zf
if defined Zeile echo "%Zeile%">>%outTxT%
::echo "last"];bildervergleich.pop();>>%outTxT%
goto :EOF
:im
if defined Zeile echo "%Zeile%",>>%outTxT%
for %%f in (im70\%name%) do set bgA=%%~zf
for %%f in (im60\%name%) do set bgB=%%~zf
for %%f in (im50\%name%) do set bgC=%%~zf
set "Zeile=%name%:%1:%bgA%:%bgB%:%bgC%"
goto :eof
bastla
P.S.: Falls auch Dir die von mir verwendete Darstellung (des Batches) besser gefallen sollte: (lässt sich sogar nachträglich anwenden )
Hallo UZehnder!
wobei aber noch zu überlegen wäre, dass im Fall der leeren Variable %Zeile% (an dieser Stelle nur dann möglich, wenn keine einzige Datei gefunden wurde) das Ergebnis vielleicht ohnehin unbrauchbar ist ...
Grüße
bastla
ist diese Zeile so konform? if defined Zeile echo "%Zeile%">>%outTxT% ];>>%outTxT%
Wenn schließende Klammer und Semikolon ja auf jeden Fall (und auch nicht in eine neue Zeile) geschrieben werden sollen, genügt eigentlichecho "%Zeile%" ];>>%outTxT%
Grüße
bastla