Laufender Tag im Jahr und Zähler.
Hallo zusammen,
habe folgende Problemchen...
Habe eine Datei mit dem Namen "kkkA5xxxva520.pm"
kkk steht für den Laufenden Tag im Jahr. Heute für den 20.07.2005 wäre das "201".
Wie mache ich es, dass ich den laufenden Tag bekomme, und Ihn in den Dateinamen einfügen kann?
Gibt es da schon Konvertierungsfunktionen oder muss man sich das alles selbst zusammen basteln?
Wie programmiere ich denn in Batch einen Zähler?
Den Wert des Zählers muß bei jeder Datei inkrementiert werden.
xxx können genutzt werden für den Zähler.
Dachte mir das so, dass man in den Systemvariablen den Wert auf 1 setzt und das bei jedem neuen Tag. Wie mache ich das aber bei einem Neustart?
Bei Neustart kein Zählerreset.
Bei Datumswechsel Zählerreset.
Wäre sehr dankbar für Eure Hilfe!
habe folgende Problemchen...
Habe eine Datei mit dem Namen "kkkA5xxxva520.pm"
kkk steht für den Laufenden Tag im Jahr. Heute für den 20.07.2005 wäre das "201".
Wie mache ich es, dass ich den laufenden Tag bekomme, und Ihn in den Dateinamen einfügen kann?
Gibt es da schon Konvertierungsfunktionen oder muss man sich das alles selbst zusammen basteln?
Wie programmiere ich denn in Batch einen Zähler?
Den Wert des Zählers muß bei jeder Datei inkrementiert werden.
xxx können genutzt werden für den Zähler.
Dachte mir das so, dass man in den Systemvariablen den Wert auf 1 setzt und das bei jedem neuen Tag. Wie mache ich das aber bei einem Neustart?
Bei Neustart kein Zählerreset.
Bei Datumswechsel Zählerreset.
Wäre sehr dankbar für Eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 13378
Url: https://administrator.de/forum/laufender-tag-im-jahr-und-zaehler-13378.html
Ausgedruckt am: 13.04.2025 um 10:04 Uhr
5 Kommentare
Neuester Kommentar
Moin, Schmiddy,
nur aus sportlichen Gründen mal eine reine Batchlösung.
Unterstellt: dieser Batch wird aufgerufen, um eine vorhandene Datei umzubenennen.
--> also <font color=green>kkkxxxRename.bat Dateiname </font>
Lässt sich aber natürlich auch umstricken zu
--> SetzeNächstenDateinamen.bat (ohne Parameter)
Sollte auch resistent gegen zwischenzeitliches Booten sein und auch gegen Arbeiten über die Mitternachtsgrenze hinweg.
Dafür die %OldDate%-Zeilen.
Hope It Helps
Frank / der Biber aus Bremen
nur aus sportlichen Gründen mal eine reine Batchlösung.
Unterstellt: dieser Batch wird aufgerufen, um eine vorhandene Datei umzubenennen.
--> also <font color=green>kkkxxxRename.bat Dateiname </font>
Lässt sich aber natürlich auch umstricken zu
--> SetzeNächstenDateinamen.bat (ohne Parameter)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
:: -------Beispiel kkkxxxRename.bat
@echo off
::- unterstellt: Parameter [LW:][Pfad\]Dateiname zum Umbenennen nötig
::wenn nur eine Variable gesetzt werden soll, die nächsten beiden Zeilen auskommentieren
If (%1)==() echo Aufruf: %~n0 [LW:][Pfad\]Dateiname zum Umbenennen
If (%1)==() goto PanicExit
if not defined OldDate set OldDate=%date%
if defined kkk if %OldDate%==%date% goto kkkHabIch
set Monat=%date:~3,2%
set Tach=%date:~0,2%
IF %Monat%==01 Set /a TageVorbei = 0
IF %Monat%==02 Set /a TageVorbei = 31
IF %Monat%==03 Set /a TageVorbei = 31 +28
IF %Monat%==04 Set /a TageVorbei = 31 +28 +31
IF %Monat%==05 Set /a TageVorbei = 31 +28 +31 + 30
IF %Monat%==06 Set /a TageVorbei = 31 +28 +31 + 30 + 31
IF %Monat%==07 Set /a TageVorbei = 31 +28 +31 + 30 + 31 +30
IF %Monat%==08 Set /a TageVorbei = 31 +28 +31 + 30 + 31 +30 +31
:: etc..lies selber vom Kalender ab *gg
Set /a kkk=%TageVorbei% + %Tach%
:kkkHabIch
if not exist %temp%\%kkk%.txt echo 1000>%temp%\%kkk%.txt
set /p nxxx=<%temp%\%kkk%.txt
set /a nxxx= %nxxx% + 1
set cxxx=%nxxx:~1,3%
echo Alter Dateiname: %1 neuer Dateiname: %kkk%%~n1%cxxx%.%~x1
:: hier dann vielleicht ein Rename oder ein copy oder whatever
:: Beispiel rename %1 %kkk%%~n1%cxxx%.%~x1 ....... oder rename %1 %kkk%A5%cxxx%va520.~x1
:: ergibt z.B rename v:\data\test.xyz 201data003.xyz ...oder rename v:\data\test.xyz 201A5003va520.xyz
:: oder eben Set NaechsterDateiname=%kkk%A5%cxxx%va520
:: und dann Zähler hochsetzen in der Datei, wenn nichts gescheitert ist:
if errorlevel 0 echo %nxxx%>%temp%\%kkk%.txt
For %%i in (nxxx cxxx Tach Monat) do set %%i=
:PanicExit
::-------Beispiel kkkxxxRename.bat
Sollte auch resistent gegen zwischenzeitliches Booten sein und auch gegen Arbeiten über die Mitternachtsgrenze hinweg.
Dafür die %OldDate%-Zeilen.
Hope It Helps
Frank / der Biber aus Bremen
Freut mich, Schmiddy,
als bekennender Perfektionist noch der Hinweis:
ich würde auch die kkk-Variable grundsätzlich auf drei Stellen formatieren (falls 2006 das Bätchelchen immer noch im Einsatz ist *gg), also:
Set /a kkk=%TageVorbei% + %Tach% ......ändern in
Set /a kkk=1000+%TageVorbei% + %Tach%
Set kkk=%kkk:~1,3%
Schönes und vor allem baldiges Wochenende
Frank / der Biber aus Bremen
als bekennender Perfektionist noch der Hinweis:
ich würde auch die kkk-Variable grundsätzlich auf drei Stellen formatieren (falls 2006 das Bätchelchen immer noch im Einsatz ist *gg), also:
Set /a kkk=%TageVorbei% + %Tach% ......ändern in
Set /a kkk=1000+%TageVorbei% + %Tach%
Set kkk=%kkk:~1,3%
Schönes und vor allem baldiges Wochenende
Frank / der Biber aus Bremen