2017-03-13 7 views
0

Guten Tag,Umbenennen Datei mit Änderungsdatum mit Batch-Datei

Ich bin wahrscheinlich neu in der Erstellung von Batch-Datei. Mein Ziel ist es, Dateien vom Quell- in den Zielordner zu kopieren und die Datei mit dem Änderungsdatum umzubenennen, sobald sie im Zielordner sind. Ich habe eine Herausforderung aufgegeben, um das modifizierte Datum zu bekommen. Es zeigt oder umbenennt die Datei mit dem aktuellen Datum und nicht das Änderungsdatum. Hier ist mein Code für Ihre Referenz:

@echo off 
setLocal EnableDelayedExpansion 
::set tDate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set tDate=%date:~7,2%-%date:~4,2%-%date:~10,4% 
set source="C:\Source Folder" 
set target=%userprofile%\Desktop\backup 
for %%i in (%source%\AL*.*) do (
::set myfiledate=%%~ta 
copy "%%i" "%target%\%tDate%_%%~nxi" 
) 

Ich schätze Ihre Eingabe in dieser Angelegenheit wirklich

Dank

+0

Also - Sie setzen 'tdate' vom aktuellen Datum, dann scannen Sie das Verzeichnis und kopieren die Datei mit' tdate', so dass es keine Überraschung ist, dass die Zieldatei das aktuelle Datum als Teil des Namens hat. Es ist eine schlechte Übung, einen ':: Kommentar 'innerhalb eines Codeblocks zu haben - es ist ein defektes Etikett und kann zu unerwarteten Ergebnissen führen. – Magoo

+0

Danke für die Eingabe. Ich nehme das bezüglich des Kommentars. also wie kann ich das geänderte Datum extrahieren und es an einen Dateinamen anhängen. – Djspooch

+0

Lesen Sie die Hilfe von 'for' (geben Sie' /? 'In ein Komma-Eingabeaufforderungsfenster ein), insbesondere den Teil mit den' ~ 'Modifikatoren; Sie werden feststellen, dass es eine Möglichkeit gibt, das letzte Änderungsdatum zu erhalten. Beachten Sie, dass dies das Datum in einer vom Gebietsschema abhängigen Weise zurückgibt, genau wie '% DATE%' und '% TIME%' Variablen ... – aschipfl

Antwort

0
... 
for %%i in (%source%\AL*.*) do (
set myfiledate=%%~ti 
ECHO(copy "%%i" "%target%\!myfiledate:~0,2!!myfiledate:~5,2!!myfiledate:~6,4!_%%~nxi" 
) 

Ich gehe davon aus Sie das Datum in der neuen Datei im Format wollen aabbyyyy, aber ich würde vorschlagen, dass Sie YYYYMMDD für die einfache Sortierung verwenden.

ich auch würde vorschlagen, beginnen Sie mit dem echo den Kopierbefehl ing es korrekt ist, um sicherzustellen, (wie oben dargestellt) - entfernen Sie einfach das echo( zu tun eigentlich die Kopie.

Die Reihenfolge der drei verketteten Datumselemente !myfiledate:~x,y! muss möglicherweise abhängig von Ihren Einstellungen und Anforderungen geändert werden. Sie sollten das Jahr, den Monat und den Tag extrahieren.

+0

Danke für die Antwort. Ich habe den Code ausprobiert und es wurde kopiert, aber das geänderte Datum wurde nicht im Dateinamen angezeigt. Der Dateiname wenn von diesem zu: 13-03-2017_AL & PP (3) bis _AL & PP (3) – Djspooch

+0

Ich kopierte einfach Ihren Code und entfernte den '::' Kommentar. Die Metavariable '%% i' wird verwendet und muss mit der in der Zuweisung verwendeten Metavariablen übereinstimmen. – Magoo

+0

Ich habe einfach Ihren Code kopiert und den '::' Kommentar entfernt. Die Metavariable '%% i' wird verwendet und muss mit der in der Zuweisung verwendeten Metavariablen übereinstimmen. – Magoo