Пакетно установленный атрибут времени и даты в соответствии с именами файлов в папке - PullRequest
2 голосов
/ 30 марта 2012

Спасибо за чтение и за возможный ответ.

У меня есть папка с файлами с именем yyyymmddhhMMss.m2ts, например 20120330193059.m2ts. На самом деле они выводятся с видеокамеры Sony с дополнительными файлами с отсутствующими метаданными.

Для их правильной организации мне нужно установить атрибуты файла «дата создания» и «дата изменения» в соответствии с их именами файлов, поскольку все необходимые данные там уже присутствуют.

Я совершенно далек от любого вида программирования или кодирования, но я думал, что смогу скомпилировать .cmd сам, используя примеры, которые смог найти. Но теперь я должен признать, что потерпел неудачу с этим.

Я понимаю, что я должен получить имя файла в переменной, разделить эту переменную на 6 частей и затем применить их в качестве атрибута файла для каждого файла в папке. Но я не могу понять, как.

Существует множество примеров того, как переименовать файл в соответствии с его отметкой времени, но не наоборот.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 31 марта 2012

Вы можете попробовать пакетный файл ниже.Сначала используйте набор тестовых файлов.

@echo off
setlocal EnableDelayedExpansion
set origDate=%date%
set origTime=%time%
for %%f in (*.*) do (
   set fName=%%~Nf
   set fDate=!fName:~4,2!/!fName:~6,2!/!fName:~0,4!
   set fTime=!fName:~8,2!:!fName:~10,2!:!fName:~12,2!
   REM Next line update just "Date Modified" in a fast way:
   REM echo !fDate!| date & echo !fTime!| time & copy "%%f" +,,
   REM Next 4 lines update both "Modified" and "Created" dates, but it is slower:
   echo !fDate!| date & echo !fTime!| time & copy "%%f" "%%~Nf.tmp"
   echo !fTime!| time & copy "%%~Nf.tmp" +,,
   del "%%f"
   ren "%%~Nf.tmp" "%%f"
)
echo %origDate%| date
echo %origTime%| time

Этот пакетный файл требует, чтобы у вас было достаточно учетных данных, чтобы изменить системные часы.Предполагается, что echo %date% отображает дату в формате ММ / ДД / ГГГГ;если нет, то нужна небольшая модификация.Если число обрабатываемых файлов велико, системные часы могут быть переведены на несколько секунд назад;возможно, вам нужно вручную сбросить системные часы, когда пакетный файл закончится.

Пожалуйста, сообщите результаты.

РЕДАКТИРОВАТЬ : я включил две части (измененные и созданныедаты) в том же списке выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...