Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch Datum in anderem Format an Dateinamen anfügen

Frage Entwicklung Batch & Shell

Mitglied: Damnedfreak

Damnedfreak (Level 1) - Jetzt verbinden

29.08.2012, aktualisiert 09:20 Uhr, 2690 Aufrufe, 6 Kommentare

Guten Morgen,

eventuell kann mir hier ja jemand weiterhelfen. Und zwar habe ich folgendes Problem:

Ich habe in einem bestimmten Ordner immer 3 gleich benannte Dateien (ApShell.abf/RL_Kons_VER_VL.abf/RLPV_Produktvorhaben.abf im Ordner G:\Backups). Dieses sind Analysis Services Backups, welche jede Nacht geschrieben werden. Um nun mehrere Generationen gleichzeitig im Laufwerk haben zu können, möchte ich an den Backupjob nun einen weiteren Step anhängen (in Form eines cmd-files), welcher die 3 Dateien umbenennt und das aktuelle Datum (im Format 2012_08_27_013757 oder ohne Unterstriche, ist eig. egal) anfügt. Problem hierbei ist, dass die Systemzeit englisch ist, sprich ein %date% 08/29/2012 zurückgibt.

Bisher habe ich folgendes zusammensuchen können (am Beispiel eines Backups):

01.
@echo off 
02.
for /f "tokens=*" %%a in ( 
03.
'dir /b G:\Backups\OLAP\Apshell.abf' 
04.
) do call :rename "%%a" 
05.
goto :EOF 
06.
:rename 
07.
set timestamp=%date% 
08.
set oldname=%~1 
09.
set newname=%oldname%_%timestamp%.abf 
10.
echo ren "G:\Backups\OLAP\%oldname%" "%newname%" 
11.
pause
Was folgendes zurückgibt:

01.
ren "G:\Backups\OLAP\ApShell.abf" "ApShell.abf_Wed 08/29/2012.abf" 
02.
Press any key to continue . . .

Entspricht leider nicht wirklich dem, was ich haben will. Leider bin ich nun aber komplett überfragt, wie ich das Problem lösen kann (um auch das .abf mittendrin zu entfernen), da die Suche per Google mich nicht mehr weiterbringt.

Vielen Dank schonmal im voraus!!
Mitglied: bastla
29.08.2012 um 09:51 Uhr
Hallo Damnedfreak!

Es sollte ja genügen, das Datum (lt Deinem Beispiel wäre das "Wed 08/29/2012") per "for"-Schleife zu zerlegen und dann passend zusammenzusetzen:
01.
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do set "WoTag=%%a" & set "Mon=%%b" & set "Tag=%%c" & set "Jahr=%%d" 
02.
echo %Jahr%-%Mon%-%Tag%
Grüße
bastla
Bitte warten ..
Mitglied: Damnedfreak
29.08.2012 um 10:06 Uhr
Hallo bastla,

vielen Dank für Deine Antwort! Das funktioniert schonmal super, vielen Dank schonmal dafür!

Nun müsste nur noch das eine ".abf" im Dateinamen raus, das zuviel ist. Die Stunden+Minutenangabe ohne Doppelpunkt aus dem %time% kriege ich denke ich noch selbst zum Dateinamen hinzu, das wäre hier auch zu viel zu verlangen

Grüße
freaky
Bitte warten ..
Mitglied: bastla
29.08.2012 um 10:57 Uhr
Hallo Damnedfreak!

Du kannst in Deinem Unterprogramm den Dateinamen mit "%~n1" erhalten, den Typ mit "%~x1" ...

Grüße
bastla
Bitte warten ..
Mitglied: Damnedfreak
29.08.2012 um 12:19 Uhr
Vielen vielen Dank bastla!

Mit meinem Script

01.
@echo off 
02.
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do set "WoTag=%%a" & set "Mon=%%b" & set "Tag=%%c" & set "Jahr=%%d" 
03.
for /f "tokens=*" %%a in ('dir /b G:\Backups\OLAP\ApShell.abf,G:\Backups\OLAP\RL_Kons_VER_VL.abf,G:\Backups\OLAP\RLPV_Produktvorhaben.abf') do call :rename "%%a" 
04.
goto :EOF 
05.
:rename 
06.
set oldname=%~n1 
07.
set newname=%oldname%_%Jahr%%Mon%%Tag%.abf 
08.
ren "G:\Backups\OLAP\%oldname%" "%newname%"
bekomme ich nun den gewünschten Output! Das mit Std+Min ist ja nur noch ne Kleinigkeit!

Vielen Dank nochmal,
einen schönen Tag noch!
Bitte warten ..
Mitglied: Damnedfreak
30.08.2012 um 09:37 Uhr
Kleines Update, bin in nem andern Forum noch fündig geworden bezüglich Timestamp, was alles vereint

01.
@echo off 
02.
wmic path win32_localtime get dayofweek,day,month,year,hour,minute,second>"aktuellesdatum.txt" 
03.
for /f "skip=1 tokens=1,2,3,4,5,6,7" %%a in ('type "aktuellesdatum.txt"') do set tag=%%a&set wochentag=%%b&set stunde=%%c&set minute=%%d&set monat=%%e& set jahr=%%g 
04.
 
05.
if %tag% lss 10 set tag=0%tag% 
06.
if %monat% lss 10 set monat=0%monat% 
07.
if %jahr% lss 10 set jahr=0%jahr% 
08.
if %stunde% lss 10 set stunde=0%stunde% 
09.
if %minute% lss 10 set minute=0%minute% 
10.
  
11.
for /f "tokens=*" %%a in ( 'dir /b G:\Backups\OLAP\ApShell.abf,G:\Backups\OLAP\RL_Kons_VER_VL.abf,G:\Backups\OLAP\RLPV_Produktvorhaben.abf' ) do call :rename "%%a" 
12.
goto :EOF  
13.
:rename  
14.
set oldname=%~n1 
15.
set newname=%oldname%_%jahr%%monat%%tag%%stunde%%minute%.abf 
16.
ren "G:\Backups\OLAP\%oldname%".abf "%newname%"
Bitte warten ..
Mitglied: bastla
30.08.2012, aktualisiert um 10:15 Uhr
Hallo Damnedfreak!
... in nem andern Forum ...
Das wäre ja nun nicht nötig gewesen (zB http://www.administrator.de/forum/DOS-Batch-mit-Date-Funktion-90309.htm ...) - ich dachte, Du wolltest das auf Basis der Datumszerlegung selbst herausfinden ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst (Batch) Datum Sortier-Mechanismus (19)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateinamen umschreiben batch (5)

Frage von jocheng zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...