Komma aus Variable wird durch Leerzeichen ersetzt
Ich bin relativ gesehn noch anfänger als bitte kein schläge :D
In meiner Batch datei möchte ich 2 zeichen aus einer variablen mit einer anderen variablen vergleichen.
normalerweiße passiert das ja mit %variable:~0,2% beim ausführen wird aber das Komma durch ein Leehrzeichen ersetzt.
Ich wär für Ideen und Lösung dankbar, die variablen %%c bis %%g mit !lastaccess! (01.01.1970 00:00) zu vergleichen
Meine Batchdatei
DOS Ausgabe (Prompt Pfad entfernt)
In meiner Batch datei möchte ich 2 zeichen aus einer variablen mit einer anderen variablen vergleichen.
normalerweiße passiert das ja mit %variable:~0,2% beim ausführen wird aber das Komma durch ein Leehrzeichen ersetzt.
Ich wär für Ideen und Lösung dankbar, die variablen %%c bis %%g mit !lastaccess! (01.01.1970 00:00) zu vergleichen
Meine Batchdatei
setlocal enableDelayedExpansion
...
for /f "tokens=1,3 delims=;" %%a in (files.tmp) do (
for /f "tokens=1,2,3,4,5 delims=:." %%c in ('echo %%b') do (
if %%e GEQ !lastaccess:~6,4! (
if %%d GEQ !lastaccess:~3,2! (
if %%c GEQ !lastaccess:~0,2! (
if %%f GEQ !lastaccess:~11,2! (
if %%g GTR !lastaccess:~14,2! (
echo %%a
)
)
)
)
)
)
)
del files.tmp
pause
DOS Ausgabe (Prompt Pfad entfernt)
echo "U:\Pfad\Datei.exe";11776;25.03.2011 09:51;14.06.2012 03:28;14.06.2012 03:28;".exe" 1>files.tmp
for /F "tokens=1,3 delims=;" %a in (files.tmp) do (
for /F "tokens=1,2,3,4,5 delims=:." %c in ('echo %b') do (
if %e GEQ !lastaccess:~6 4! (
if %d GEQ !lastaccess:~3 2! (
if %c GEQ !lastaccess:~0 2! (
if %f GEQ !lastaccess:~11 2! (
if %g GTR !lastaccess:~14 2! (
echo %a
)
) )
del files.tmp
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 194930
Url: https://administrator.de/forum/komma-aus-variable-wird-durch-leerzeichen-ersetzt-194930.html
Ausgedruckt am: 23.04.2025 um 01:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo themida!
Stimmt - eigentlich sollte die Zeile 9 zu einem Fehler führen ...
... anyhow - die ganze Folge von "
prüfen ...
Anmerkung: Der Vergleich der beiden Timestamps muss als String erfolgen (deshalb die Anführungszeichen), da ein Zahlenwert 201103250951 die Grenze für arithmetische Operationen in CMD (für positive Werte: 2^31 - 1 = 2147483647) natürlich bei Weitem übersteigt.
Grüße
bastla
Stimmt - eigentlich sollte die Zeile 9 zu einem Fehler führen ...
... anyhow - die ganze Folge von "
if
" würde ich ohnehin einsparen und einfach mitfor /f "tokens=1,3 delims=;" %%a in (files.tmp) do (
for /f "tokens=1,2,3,4,5 delims=:. " %%c in ('echo %%b') do (
if "%%e%%d%%c%%f%%g" gtr "!lastaccess:~6,4!!lastaccess:~3,2!!lastaccess:~0,2!!lastaccess:~11,2!!lastaccess:~14,2!" echo %%a
)
Anmerkung: Der Vergleich der beiden Timestamps muss als String erfolgen (deshalb die Anführungszeichen), da ein Zahlenwert 201103250951 die Grenze für arithmetische Operationen in CMD (für positive Werte: 2^31 - 1 = 2147483647) natürlich bei Weitem übersteigt.
Grüße
bastla