/ / Batch-Datei, um alle Dateien in einem Ordner umzubenennen, indem das aktuelle Datum / Uhrzeit am Anfang des Dateinamens hinzugefügt wird - Datum, Uhrzeit, Batch-Datei, Umbenennen

Batch-Datei zum Umbenennen aller Dateien in einem Ordner durch Hinzufügen des aktuellen Datums / Uhrzeit zum Anfang des Dateinamens - Datum, Uhrzeit, Batch-Datei, Umbenennen

Ich kann anscheinend nicht verstehen, wie Batch-Dateien yyyy / mo / dd / hh / mm / s zum Anfang von Dateinamen hinzufügen. (Unter Windows 7) Genauigkeit zur zweiten ist wichtig.

Es muss nicht unbedingt eine Batch-Datei sein, es muss nur ein kleines Programm sein, das von Directory Monitor ausgeführt werden kann, wenn ich Dateien zu einem Ordner hinzufüge: http://brutaldev.com/page/Directory-Monitor.aspx Ich kann mir nur vorstellen, dass eine Batch-Datei der einfachste und effizienteste Ansatz ist, aber alle anderen Vorschläge sind willkommen.

Ich arbeite mit vielen sequentiell nummerierten Dateien mitüberlappende Dateinamen und ich brauche eine schnelle Möglichkeit, sie umzubenennen, wenn ich sie zu einem Ordner hinzufügen, so dass es nie eine Datei mit dem gleichen Namen geben wird, aber sie werden immer in der Reihenfolge bleiben. So dachte ich über das Hinzufügen des aktuellen Datums und der Uhrzeit an den Anfang des Dateinamens nach und warum Sekunden wichtig sind, da ich problemlos mehrere Sätze zu einem Ordner in weniger als einer Minute hinzufügen kann, aber sicher nicht unter einer Sekunde. Es wäre ideal, wenn die Batchdatei Dateierweiterungen ignorieren und einfach das aktuelle Datum / die aktuelle Uhrzeit am Anfang jeder Datei hinzufügen könnte, die dem Ordner hinzugefügt wurde.

Antworten:

0 für die Antwort № 1
   @ECHO off
SETLOCAL
IF [%1] NEQ [] goto s_start

:: Author - Simon Sheppard, July 2003
:: Tested for Windows NT, 2K, XP

ECHO STAMPME.cmd
ECHO REName a file with the DATE/Time
ECHO.
ECHO SYNTAX
ECHO       STAMPME TestFile.txt
ECHO.
ECHO       STAMPME "Test File.txt"
ECHO.
ECHO       STAMPME "c:docsTest File.txt"
ECHO.
ECHO       In a batch file use CALL STAMPME ...

:: To change the filename format just change around the last line below

GOTO :eof

:s_start

SET _file=%~n1%
SET _pathname=%~f1%
SET _ext=%~x1%

::Get the date
::  note ISO 8601 date format would require 4 digit YYYY Year)

FOR /f "tokens=6-8 delims=/ " %%G IN ("NET TIME \%computername%") DO (
SET _mm=%%G
SET _dd=%%H
SET _yy=%%I
)

:: Get the time
FOR /f "tokens=2-4 delims=:." %%G IN ("cmd /c "time<nul"") DO (
SET _hr=%%G
SET _min=%%H
SET _sec=%%I
GOTO :done
)
:done
ECHO Today is Year: [%_yy%] Month: [%_mm%] Day: [%_dd%]
ECHO The time is:   [%_hr%]:[%_min%]:[%_sec%]

REN "%_pathname%" "%_hr%-%_min%-%_sec%@%_file%%_ext%"

Das scheint für mich zu funktionieren


0 für die Antwort № 2

Ich bevorzuge Lösungen, die nicht von lokalen Einstellungen abhängig sind (wmic gibt immer das gleiche Format):

@echo off
setlocal EnableDelayedExpansion
for %%a in (a.*) do (
for /f %%i in ( "wmic os get localdatetime /value ^|find "Local"" ) do set %%i
set ldt=!LocalDateTime:~0,4!-!LocalDateTime:~4,2!-!LocalDateTime:~6,2!-!LocalDateTime:~8,2!-!LocalDateTime:~10,2!-!LocalDateTime:~12,2!-!LocalDateTime:~15,3!

echo seconds        ### ren %%a !LocalDateTime:~0,14!%%a
echo milliseconds   ### ren %%a !LocalDateTime:~0,18!%%a
echo with separator ### ren %%a !ldt!-%%a
)

0 für die Antwort № 3

Die ersten vier Zeilen dieses Codes geben Ihnen verlässliche YY DD MM JJJJ HH Min Sec Variablen in XP Pro und höher.

@echo off
for /f "tokens=2 delims==" %%a in ("wmic OS Get localdatetime /value") do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%" & set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"

:: this line will rename the files in the current folder which haven"t already
:: been renamed by checking for the fullstamp format at the start of the line
:: but it will skip this batch file

for /f "delims=" %%a in ("dir /b /a-d ^|findstr /v "^[0-9]*-[0-9]*-[0-9]*_[0-9]*-[0-9]*-[0-9]*" ") do if /i not "%%a"=="%~nx0" ren "%%a" "%fullstamp% - %%a"

pause