117471
Goto Top

Quickie: Ordner auf "Tag minus 1" umbenennen

Ich möchte unter WindowsXP in einer Batch-Datei:
1. Das Datum des gestrigen Tages auslesen
2. Den Ordner D:\Beispielordner\ entsprechend des Ergebnisses aus Schritt 1. umbenennen (Format: yyyymmdd)

Beispiel: Am 01.03.2016 soll das aktuelle Datum ermittelt und der Ordner in Bezug auf das Ermittlungsergebnis nach D:\20160228\ umbenannt werden. Wie mache ich das am Elegantesten?

Content-Key: 252758

Url: https://administrator.de/contentid/252758

Printed on: April 19, 2024 at 08:04 o'clock

Member: colinardo
Solution colinardo Oct 22, 2014 updated at 15:26:03 (UTC)
Goto Top
Mitglied: 117471
117471 Oct 22, 2014 updated at 17:10:46 (UTC)
Goto Top
Ich habe mir ein paar ein paar Lösungen zusammengepastet. Was haltet Ihr hiervon?

@echo off

for /f "tokens=1" %%i in ('date /t') do set thedate=%%i  

set yy=%thedate:~-4%
set mm=%thedate:~-7,2%
set dd=%thedate:~-10,2%
echo Today    : %yy%%mm%%dd%

if %dd%==08 (
set dd=8 ) else (
if %dd%==09 (
set dd=9 ) )

if %mm%==08 (
set mm=8 ) else (
if %mm%==09 (
set mm=9 ) )

set /A dd=%dd% - 1
set /A mm=%mm% + 0

if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yy=%yy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set YESTERDAY=%yy%%mm%%dd%
echo Yesterday: %YESTERDAY%

Zu kompliziert, oder?
Member: Biber
Biber Oct 22, 2014 updated at 18:09:59 (UTC)
Goto Top
Moin FA-jka,

zu kompliziert finde ich es nicht... mit zwei, drei Kommentarzeilen und in Codeformatierung wäre es durchaus nachvollziehbar.

Zum Vergleich eine der eher "komplizierten" Lösungen zu diesem Thema: Datum vom Vortag in eine Datei schreiben - Ergänzung.

"Ergänzung" bezieht sich auf den Vorgänger-Beitrag Datum vom Vortag in eine Datei schreiben.

Beide Beiträge sind älter als ... ein paar Jahre, sach ich ma'.

Dementsprechend wird bestimmt hier im Thread noch der Kommentar kommen "Hmmm .. mit PowerShell bekommst du das in 67 Zeichen hin..".

Mag sein, aber dein Schnipsel und die oben verlinkten sind ja Beispiele ein für CMD-Skript... und in dem Kontext durchaus akzeptabel.

Grüße
Biber

P.S. Codeformatierung in deinem Beitrag zieh ich gleich nach... die zwei, drei Kommentarzeilen könntest du noch ergänzen bitte.
Member: colinardo
colinardo Oct 22, 2014 updated at 17:40:49 (UTC)
Goto Top
Dementsprechend wird bestimmt hier im Thread noch der Kommentar kommen "Hmmm .. mit PowerShell bekommst du das in 67 Zeichen hin..".
Biddeschön ... da will ich dich nicht enttäuschen face-wink
rni "c:\beispielordner" ((get-date -Format "yyyyMMdd").AddDays(-1))
Aber nur weil es hier eben keine Kategorie Powershell gibt. Mit der Kategorie Batch & Shell kann heute ja vieles verbunden werden face-smile; sollte man mal über eine Kategorie-Ergänzung nachdenken. Ich frag mich sowieso wie lange Batch in Windows noch sein Dasein fristen wird. Den Krampf werden wir wohl nie los.

Als denn...
Grüße Uwe
Member: Biber
Biber Oct 22, 2014 at 18:14:51 (UTC)
Goto Top
Moin colinardo,

Zitat von @colinardo:

Aber nur weil es hier eben keine Kategorie Powershell gibt. Mit der Kategorie Batch & Shell kann heute ja vieles verbunden
werden face-smile;
... sollte man mal über eine Kategorie-Ergänzung nachdenken.
Ähmm ja.... den Vorschlag habe ich auch schon mal vor .... hmmm .... ein paar Jahren eingereicht.
Muss irgendwo auf der ToDo-Rolle von unser allem WebMaster @Frank stehen - wahrscheinlich etwas weiter hinten.

Bis zur Version PowerShell v8 GTX werden wir aber so eine Kategorie haben, denke ich.

Grüße
Biber
Mitglied: 117471
117471 Oct 23, 2014 at 06:54:08 (UTC)
Goto Top
Zitat von @colinardo:

Ich frag mich sowieso wie lange Batch in Windows noch sein Dasein fristen wird. Den Krampf werden wir wohl nie los.

Warum auch? Für einen Entwickler spielt die Kompatiblität zu möglichst vielen Systemen eine hohe Rolle. Und der kleinste gemeinsame Nenner ist in dem Fall nun mal eine Batchdatei.