Falsche Variablendefinition?
Hi,
hab mich mal wieder an ner kleinen Batch versuch und einen Fehler im Script dem ich einfach nicht auf die Schliche komm ...
ich lese Dateinamen im Format XXX_0000.*. Ich brauch davon nur die letzten vier Zeichen um mit diesen dann Berechnungen anzustellen (zB.: verschiebe jede 5. Datei in Ordner 1; jede 03. in Ordner 5 usw.). Die vier Nummern können alle belegt sein. Die Zeilen dafür sehen im Moment so aus:
ich versteh auch was das Problem ist aber ich hab keine Ahnung wie ich es lösen kann. Ich müsste den String sauber in ne Zahl wandeln. Die Nullen vorne werden bei berechnungen eh entfernt, richtig? Hab schon alles möglich ausprobiert aber bekomme immer den selben Fehler.
hab mich mal wieder an ner kleinen Batch versuch und einen Fehler im Script dem ich einfach nicht auf die Schliche komm ...
ich lese Dateinamen im Format XXX_0000.*. Ich brauch davon nur die letzten vier Zeichen um mit diesen dann Berechnungen anzustellen (zB.: verschiebe jede 5. Datei in Ordner 1; jede 03. in Ordner 5 usw.). Die vier Nummern können alle belegt sein. Die Zeilen dafür sehen im Moment so aus:
@echo off
set Filename=blabla_0004.txt
set Zahl=%Filename:~-4%
set /a ergebnis=Zahl+2
echo %ergebnis%
pause
ich versteh auch was das Problem ist aber ich hab keine Ahnung wie ich es lösen kann. Ich müsste den String sauber in ne Zahl wandeln. Die Nullen vorne werden bei berechnungen eh entfernt, richtig? Hab schon alles möglich ausprobiert aber bekomme immer den selben Fehler.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 277072
Url: https://administrator.de/contentid/277072
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo evotoy,
es gibt mehrere Fehler. Die letzten 4 Zeichen deines Dateinamens sind ".txt" und nicht "0004". Eine Zahl, die eine vorangestellte 0 hat, wird mit SET /A als oktale Zahl interpretiert.
Grüße
rubberman
es gibt mehrere Fehler. Die letzten 4 Zeichen deines Dateinamens sind ".txt" und nicht "0004". Eine Zahl, die eine vorangestellte 0 hat, wird mit SET /A als oktale Zahl interpretiert.
@echo off
set "Filename=blabla_0004.txt"
for %%i in ("%Filename%") do (
set "basename=%%~ni"
set "extension=%%~xi"
)
set /a "ergebnis=1%basename:~-4% + 2"
echo %basename:~0,-4%%ergebnis:~-4%%extension%
pause
rubberman