Batch Variable wird falsch zugewiesen
irgendwie funktioniert der Befehl 'set' bei mir nicht richtig...
Woran kann das liegen? Der Befehl set scheint bei mir nicht richtig zu funktionieren. Ich habe folgendes Script geschrieben:
Ziel: Dateien in einem Ordner nach der Größe in Unterordner sortieren. Klappt so auch, wenn ich die Berechnungen mit der Variablen dateigroesse weglasse. Nun sind aber die Dateien ein bisserl unterschiedlich groß, so dass ich sie nach ihrer KB-Größe, nicht nach den Bytes sortieren will. Deshalb die Berechnungen.
Problem: Die Ausgabe ist
Der richtige Wert von Dateigroesse ist 290314
Der erste Wert der Variablen dateigroesse ist 577
Der zweite Wert der Variablen dateigroesse ist 577
Erwarten würde ich aber sowas wie 290314, 290314, 280. In der Zeile "set /a dateigroesse=%%~zf" klappt offensichtlich die Zuweisung nicht...
Es scheint vielleicht damit zu tun zu haben, dass die cmd die variable dateigroesse nur einmal für die forschleife berechnet? Oder mit den zwei for-schleifen, die verboten sein sollen (hab ich mal irgendwo gelesen)? Aber es funktioniert ja ohne dateigroesse wunderbar...
Wie könnte ich es richtig machen?
Woran kann das liegen? Der Befehl set scheint bei mir nicht richtig zu funktionieren. Ich habe folgendes Script geschrieben:
@echo off & setlocal
for /d %%v in ("I:\Pat_Dat\testtest\*.*") do (
pushd "%%v"
ECHO.working now in:
ECHO.%%v
for %%f in (*.*) do (
:: Directory mit Namen der Größe anlegen und Datei hineinkopieren
set /a dateigroesse=%%~zf
echo.Der richtige Wert von Dateigroesse ist %%~zf
echo.Der erste Wert der Variablen dateigroesse ist %dateigroesse%
set /a "dateigroesse=%dateigroesse% /1024"
echo.Der zweite Wert der Variablen dateigroesse ist %dateigroesse%
if not exist "%dateigroesse%" md "%dateigroesse%"
xcopy %%f "%dateigroesse%"
)
popd
)
Problem: Die Ausgabe ist
Der richtige Wert von Dateigroesse ist 290314
Der erste Wert der Variablen dateigroesse ist 577
Der zweite Wert der Variablen dateigroesse ist 577
Erwarten würde ich aber sowas wie 290314, 290314, 280. In der Zeile "set /a dateigroesse=%%~zf" klappt offensichtlich die Zuweisung nicht...
Es scheint vielleicht damit zu tun zu haben, dass die cmd die variable dateigroesse nur einmal für die forschleife berechnet? Oder mit den zwei for-schleifen, die verboten sein sollen (hab ich mal irgendwo gelesen)? Aber es funktioniert ja ohne dateigroesse wunderbar...
Wie könnte ich es richtig machen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 18.04.2012 um 20:57:24 Uhr
Codeformatiert und verschoben von "Windows oder was" nach "Batch & Shell".
Content-ID: 183714
Url: https://administrator.de/forum/batch-variable-wird-falsch-zugewiesen-183714.html
Ausgedruckt am: 04.04.2025 um 21:04 Uhr
4 Kommentare
Neuester Kommentar
Aloha, (Ja, wir begrüßen hier erst einmal!)
bevor ich wieder Augenschmerzen bekomme, nutze bitte unsere schöne ##blue|##-Formatierung.
So, nächster Punkt ist: nutze enabledelayedexpansion zusammen mit !Variable! oder rufe einen Unterprozess per
greetz André (auch das gehört zum guten Ton!)
@it-schlumpf ... mal ernsthaft, wenn man keine Ahnung hat ...
bevor ich wieder Augenschmerzen bekomme, nutze bitte unsere schöne ##blue|##-Formatierung.
So, nächster Punkt ist: nutze enabledelayedexpansion zusammen mit !Variable! oder rufe einen Unterprozess per
call :Sprungmarke
auf, denn set /a "dateigroesse=%dateigroesse% /1024"
innerhalb der Schleife kann so nicht funktionieren.greetz André (auch das gehört zum guten Ton!)
@it-schlumpf ... mal ernsthaft, wenn man keine Ahnung hat ...

Für Codezeilen gibt es die
Für eine Begrüßung als Zeichen für eine ordentliche Erziehung gibt's Grußformeln. Die lauten nicht "Irgendwie" oder "Woran", sondern z. B. Hallo, Hi, Guten Tag oder ähnlich.
Für eine Begrüßung als Zeichen für eine ordentliche Erziehung gibt's Grußformeln. Die lauten nicht "Irgendwie" oder "Woran", sondern z. B. Hallo, Hi, Guten Tag oder ähnlich.