/ / Партиден файл за преименуване на всички файлове в папка чрез добавяне на текуща дата / час в началото на името на файла - дата, час, партиден файл, преименуване

Партида файл, за да преименувате всички файлове в папка, като добавите текущата дата / час към началото на файла - дата, час, партиден файл, преименуване

Не мога да разбера как партидните файлове добавят гггг / мо / дд / чч / мм / сс в началото на имената на файлове. (Използване на Windows 7) Точността на втория е важна.

Това всъщност не трябва да е партиден файл, просто трябва да е малка програма, която може да се изпълнява от Directory Monitor всеки път, когато добавя файлове в папка: http://brutaldev.com/page/Directory-Monitor.aspx Представям си само, че пакетният файл би бил най-простият и най-ефективен подход, но всички други предложения са добре дошли.

Работя с много последователно номерирани файлове сприпокриващи се имена на файлове и се нуждая от бърз начин да ги преименувам всеки път, когато ги добавя в папка, така че никога няма да има файлове със същото име, но те все пак ще останат в последователен ред. Ето как си помислих да добавя текущата дата и час в началото на името на файла и защо секундите са важни, тъй като лесно мога да добавя множество набори в папка за по-малко от минута, но със сигурност не под секунда. Би било идеално, ако командният файл може да игнорира файловите разширения и просто да добави текущата дата / час в началото на всеки файл, добавен към папката.

Отговори:

0 за отговор № 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%"

Това изглежда работи за мен


0 за отговор № 2

Предпочитам решения, които не зависят от локалните настройки (wmic дава винаги един и същ формат):

@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 за отговор № 3

Първите четири реда на този код ще ви дадат надеждни YY DD MM YYYY HH Min Сек променливи в XP Pro и по-високи.

@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