t22wbd
Goto Top

Ordner umbennen mit Datum (-1Monat)

Hallo liebe Comunity,
folgendes möchte ich gerne umsetzen…

IST:
Datum = 21.11.2019
Laufwerksname1 = abc
darin -> Ordner1
oder
Laufwerksname2 = xyz
darin -> Ordner1

Soll:
„Ordner 1“ umbenennen in „Laufwerksnamen + aktuelles Jahr + aktueller Monat (-1 Monat)
also
Ordner1 => abc_201910
oder
Ordner1 => xyz_201910

Bisher habe ich:
REM Laufwerkbezeichnung finden
for /f "tokens=2 delims==" %%a in ('wmic volume where DriveLetter^="%DriveLetter%" get Label /value') do (
set "DriveLabel=%%a"
)

REM Verzeichnis umbenennen mit Laufwerkbezeichnung und Datum
if exist %ZielT% (
for /f "delims=" %%i in ('dir /b "%ZielTDatum%"') do set "zielTDatum=%%i"
for %%i in ("%zielTDatum%") do ren %%i "%%b_%Drivelabel%_%Datum%%%~xi"

Ergebnis:
abc_201911
xyz_201911


Problem wird der Januar sein, wo man dann die Bezeichnung

abc_202000 hätte !!!!

Variante:
Wie kann man den Monat und das Jahr anhand einer Datei innerhalb des Ordner1 abfangen und nutzen???

Danke schon mal

Content-Key: 517516

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

Ausgedruckt am: 19.03.2024 um 04:03 Uhr

Mitglied: erikro
erikro 21.11.2019 aktualisiert um 09:46:47 Uhr
Goto Top
Moin,

mit der Powershell ein Einzeiler:

get-psdrive -psprovider filesystem | %{move-item -path "$($_.root)\Ordner1" -destination "$(get-date -format "yyMMdd" -month $($(get-date -format "MM")-1))_$($_.description)"}  

Die Zeile geht alle Laufwerke durch und benennt Ordner1 so um, wie gewünscht. Wenn Ordner1 nicht existiert, dann gibt es eine Fehlermeldung.

hth

Erik
Mitglied: TK1987
TK1987 21.11.2019, aktualisiert am 25.11.2019 um 14:38:51 Uhr
Goto Top
Zitat von @erikro:
Die Zeile geht alle Laufwerke durch und benennt Ordner1 so um, wie gewünscht.
Nö, denn er wollte das Volumelabel im Namen haben und das Datum im Format YYYYMM und nicht YYMMDD.

Darüber hinaus
 "$(get-date -format "yyMMdd" -month $($(get-date -format "MM")-1))"   
ist viel zu kompliziert. Mach sowas lieber so:
(get-date).addmonths(-1).tostring("yyyyMM")  


Am Ende würde ich das auch besser mit Powershell lösen, jedoch so:
get-volume | ? {Test-Path ($_.driveletter+':\Ordner1')} | % {  
		ren ($_.driveletter+':\Ordner1') ($_.filesystemlabel+'_'+(get-date).addmonths(-1).tostring("yyyyMM"))  
	}

Zuerst werden die Partition abgerufen und mit "Test-Path" geprüft, ob der Ordner "Ordner1" vorhanden ist - falls ja wird dieser dann umbenannt ins gewünschte Format "Label_YYYYMM".
Mitglied: 141965
141965 21.11.2019 aktualisiert um 11:13:21 Uhr
Goto Top
Und in ne Batch eingebaut sieht das dann z.B. so aus
@echo off
powershell -ExP ByPass -NoP -C "gcim Win32_Volume | ?{Test-Path \"$($_.Driveletter\Ordner1)\" -and $_.Label -ne ''} | %%{rename-item \"$($_.Driveletter)\Ordner1\" -NewName \"$($_.Label)_$((get-date).AddMonths(-1).toString('yyyyMM'))\" -verbose}"  
Mitglied: TK1987
Lösung TK1987 25.11.2019 aktualisiert um 13:44:22 Uhr
Goto Top
Da der Thread noch nicht auf gelöst gesetzt wurde, nehme ich mal an du bist mit einer Powershell Lösung nicht zufrieden... als reines Batchscript wäre dann sowas möglich:
@echo off
setlocal enabledelayedexpansion

for /f "tokens=1,2 skip=2" %%a in ('wmic volume get driveletter^,label') do (  
	for %%c in ("%%a\Ordner1") do (  
		if "%%~tc" neq "" (  
			set Time=%%~tc
			if "!Time:~3,2!" equ "01" (  
					set month=12
					set /a year=!time:~6,4!-1
				) else (
					set /a month=1!time:~3,2!-101
					set month=0!month!
					set month=!month:~-2!
					set year=!time:~6,4!
				)
			ren "%%a\Ordner1" "%%b_!year!!month!"  
			)))
Erläuterung:
Für jedes Volume wird das Änderungsdatum von Ordner1 ausgegeben. Sofern dieses nicht leer ist (was der Fall wäre, wenn der Ordner nicht existiert), wird eine Variable time mit dem Datum gesetzt (Format ist "DD.MM.YYYY HH:SS").
Sofern von der Variable "time" ab der 3.Stelle angefangen die ersten 2 Stellen (also der Monat) = "01" ist, wird eine Variable "month" auf 12 gesetzt und eine Variable "year" auf das Jahr -1 gesetzt, sonst wird die Variable Monat auf -1 (Beachte: Da "08" und "09" als ungültige Oktalwerte angesehen würden, muss hier eine 1 vorangestellt werden; folglich dann Minus 101 gerechnet werden!) gesetzt und die Variable year auf das Jahr.

Zum Schluss folgt dann das umbennenen des Ordners
Mitglied: T22WBD
T22WBD 25.11.2019, aktualisiert am 09.12.2019 um 13:13:54 Uhr
Goto Top
Die Lösungen von TK1987 hat funktioniert !!!

Besten Dank an Alle !!