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"
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...
@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"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 02.11.2009 um 18:55:17 Uhr
Die Dateigrössen aus Verschiedenen Verzeichnissen auslesen
...um nicht zu sagen "Die Dateigrössen aus kürzlich Verschiedenen Verzeichnissen auslesen"...Content-ID: 128449
Url: https://administrator.de/forum/die-dateigroessen-aus-verschiedenen-verzeichnissen-auslesen-128449.html
Ausgedruckt am: 24.05.2025 um 23:05 Uhr
7 Kommentare
Neuester Kommentar
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