Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
gaganton
0 / 0 / 0
Регистрация: 26.04.2015
Сообщений: 2
#1

Изменить даты и время создания файла, взяв информацию из имени файла - CMD/BAT

26.04.2015, 10:39. Просмотров 4062. Ответов 18
Метки нет (Все метки)

Привет! Есть файл "Call@recording@005_20150216113542.mp3" В его имени после "_" идёт дата "20150216" и время "113542" создания файла. Нужен батник, который сможет изменять дату и время создания таких файлов в одной или нескольких папках, взяв дату и время из имени файла.
Помогите, пожалуйста.

http://www.cyberforum.ru/cmd-bat/thread1093971.html

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2015, 10:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Изменить даты и время создания файла, взяв информацию из имени файла (CMD/BAT):

Как изменить дату и время создания файла на текущие?
Как изменить дату и время создания файла на текущие? Пробовал соединить с...

Копирование файла с добавлением текущей даты к имени файла
Просто копирую файл XCOPY D:\BACKUP\base.bak E:\BACKUP\*.* /Y - норм... Мне...

Добавление текущей даты к имени файла при нестандартном формате вывода даты
Приветствую ! Давно и успешно используется код, который мне когда-то...

Добавление к имени файла даты его последнего изменения
Ребят помогите пожалуйста нужно перед запуском процесса test.exe...

Сравнение даты создания файла с заданной датой
Здравствуйте! Подскажите пожалуйста возможно ли решить мою проблему... Мне...

18
ComSpec
3400 / 1945 / 627
Регистрация: 26.02.2014
Сообщений: 1,457
27.04.2015, 00:50 #2
Лучший ответ Сообщение было отмечено gaganton как решение

Решение

Поместите пакетный файл с кодом
Windows Batch file
1
@powershell "gci '*_[1-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-2][0-9][0-5][0-9][0-5][0-9].mp3' -Recurse|%%{$_.CreationTime=Get-Date ((($x=$_.BaseName[-14..-1])[6,7]+'.'+$x[4,5]+'.'+$x[0..3]+' '+$x[8,9]+':'+$x[10,11]+':'+$x[12,13]) -join '')}"
в папку, в которой находятся файлы, которые нужно обработать (в том числе, и если эти файлы находятся в подпапках любого уровня вложенности), и запустите.
3
Anahored
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 2
04.09.2015, 08:37 #3
Добрый день! Как раз попал в ветку которая мне нужна! У меня похожая ситуация, только мне нужно установить дату фотографиям по их именам. EXIFы отсутствуют! Имена в таком формате: 2011-08-18_inside me-0001, т.е. до знака _ стоит дата через дефисы. Пытался изменить батник приведенный выше, но у меня ничего не сработало Жду вашей помощи!
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
04.09.2015, 12:07 #4
Anahored, А, может, у Вас XP, в таком случае надо будет скачать и бросить в system32 powershell, потому что там она, увы, отсутствует.
0
ComSpec
3400 / 1945 / 627
Регистрация: 26.02.2014
Сообщений: 1,457
15.09.2015, 22:26 #5
Цитата Сообщение от Anahored Посмотреть сообщение
Имена в таком формате: 2011-08-18_inside me-0001, т.е. до знака _ стоит дата через дефисы. Пытался изменить батник приведенный выше, но у меня ничего не сработало Жду вашей помощи!


Код пакетного файла:
Windows Batch file
1
@powershell "gci -r|?{!$_.PSIsContainer}|?{$_ -match '^\d{4}(-\d{2}){2}_.*'}|%%{If($(Try{($d=Get-Date ($_.Name -replace '_.*$') -f 'dd.MM.yy')}Catch{})){$_.CreationTime=Get-Date ($d+' '+(Get-Date $_.CreationTime -u %%T))}}"
.

Инструкция к применению пакетного файла с этим кодом аналогична приведённой мной выше.
1
Anahored
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 2
15.09.2015, 22:44 #6
Спасибо огромное! Все получилось!
0
telealex
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 5
26.06.2017, 02:37 #7
добрый день. ужас. я тут пытался смотреть эти выражения и голова чуть не поломалась

у меня за многие годы насобиралась куча фотографий и во многих тоже нет EXIF
и изза этого они постоянно множатся, когда копирую в телефоне у себя и знакомых (а такбы я их через комп исправлял после переноса на microsd). (там вообще сумасшествие какое то. все файловые менеджеры которые пробовал на android, все при копировании файлов из одного источника в другой постоянно теряют оригинальную дату файла)

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

- можете сделать так чтоб оно не обращало внимания на расширения во всех вариантах
- и чтоб не трогало дату если не нашло её в имени
- возможно ли распознать timestamp и сразу дату файла конвертануть в соответствии?
- можно ли както сделать чтоб эти комманды (выражения) по отдельным именам файлов включить в один батник
или чтоб можно было подключать батники по цепочке (это если они будут конфликтовать), чтоб както автоматизировать под нужды?
а если уж както они там будут конфликтовать, то может в какомто определенном порядке их там расположить?


#01 20121225.jpg
#02 201305302355.jpg
#03 20160229112546.jpeg
#04 2013-08-19-086.jpg
#05 2013-12-30-264.mp4
#06 20140313-0320.jpg
#07 20130710_164647.jpg
#08 20130707_111707_1.jpg
#09 20150217_143633~01.jpg
#10 20120819_171141(0).jpg
#11 20140528_170018_Unnamed Rd.jpg
#12 _20170319_003220.JPG
#13 IMG_20150805_141316_496.jpg
#14 IMG_20150805_210512.jpg
#15 IMG-20140101-WA0003.jpg
#16 VID-20170604-WA0034.mp4
#17 VID_20160721_115925.3gp
#18 C360_2014-10-16-19-26-30-485.jpg
#19 Screenshot_2013-01-18-14-25-04.png
#20 fotos_20140407013120.jpg
#21 10122011107.jpg вот еще видимо какойто американский формат нашел. тут сначала ddmmyyyy(дальше просто порядковый номер)
#22 image200810290008.jpg
#23 image200810290013_2.jpg

#24 photo_1393114136688.jpg есть даже такой зверь. я по одному из EXIF поглядел и там дата создания 2014-02-23 010914. я проверил по онлайн сервису и оно совпало и получилось что из имени файла первые 10 цифр это timestamp (1393114136) а потом просто порядковый номер незнаю чего. ну это уже и не важно



помогите пожалуйста с такими именами. вижу что многовато, но я не один кто страдает от данной проблемы многие годы подряд. а так Вы нам сможете помочь.
Спасибо

p.s. я даже попытался изучать маску для этого файла который в теме "Call@recording@005_20150216113542.mp3", но даже не уверен что она подойдет для моего варианта #20
0
volodin661
1742 / 853 / 144
Регистрация: 10.12.2013
Сообщений: 2,919
26.06.2017, 09:40 #8
ну чо, интересно..
1) искать в имени тетрады типа 20xx, подразумевая, что это год,
затем догадываться, где относительно года расположены месяц и день
2) если тетрада 20xx не найдена, то попробовать повыкусывать с разных концов по 10 цифр
на предмет интерпретации их как unix-time timestamp и если получится год 20xx, то посчитать за успех.

остаётся найти мотивацию всем этим заниматься
1
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
27.06.2017, 18:32 #9
telealex, у меня тут есть парочка скриптов на powershell, которые раскидывают файлы по папкам вида YYYY_MM (можно настроить по-другому), в них учитываются даты по exif, а если отсутствуют, то по дате изменения (можно исправить на дату создания), но ... для опубликования этих скриптов необходимо перейти в ветку powershell и там создать топик с осмысленным заголовком. Ну, вот нет желания и времени всё это реализовывать в cmd, да ещё и с помощью сторонних программ, т.к. уже есть рабочие скрипты...
0
telealex
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 5
30.06.2017, 20:51 #10
всем спасибо за внимание

Цитата Сообщение от YuS_2 Посмотреть сообщение
перейти в ветку powershell и там создать топик с осмысленным заголовком
Вы написали с осмысленным названием, например такое подойдет - "установка даты create/modificate date файла-картинки по EXIF/file-name masks"?

Если название темы предложенное мною не очень отражает суть задачи, то предложите на Ваш взгляд более благозвучное
0
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
01.07.2017, 08:33 #11
Цитата Сообщение от telealex Посмотреть сообщение
предложите на Ваш взгляд более благозвучное
Суть задачи не очень мне понятна, т.к. вчитываться в кучу текста, который ещё необходимо осмысливать, нет большого желания...
А предложить могу примерно так:
Помогите упорядочить файлы фотографий и мультимедиа по папкам вида __________.

А в самом сообщении описать по каким критериям и в каком приоритете файлы будут отбираться, например:
1. По данным EXIF, где из даты фото необходимо использовать YYYY_MM или ещё какой-либо формат...
2. Если отсутствуют данные EXIF, использовать дату изменения файла.


Имхо, использовать имена файлов совсем непродуктивно, т.к. алгоритмов именования слишком много, чтобы их все учесть, тем более, что зачастую, помимо даты, в имени присутствует ещё и обычная нумерация снимков...
Опять же, имхо, для упорядочивания файлов из одной большой кучи, по папкам именно вида YYYY_MM, вполне достаточно... и сам использую такой же алгоритм.
0
telealex
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 5
02.07.2017, 02:31 #12
Цитата Сообщение от YuS_2 Посмотреть сообщение
Суть задачи не очень мне понятна
мне надобно установить дату файла по имени файла, если этой даты нет в EXIF.
к этим странным именам файлов я не имею никакого отношения. эти имена делает сама аппаратура (фотокамеры,видеокамеры,телефоны,...)

мне не надо перемещать файлы. пускай они остаются там где и были))

ps я согласен что использовать имена файлов не продуктивно, но это единственная возможность установить дату файла если она была утеряна за долгое время при копировании информации с флешек/дисков/и тп.



собственно плюс того что даты будут установлены, в том что, в будущем программа отображающая изображения сможет разместить весь массив в хронологическом порядке. что уже будет очень даже удобно. сейчас такие средства набирают популярность. например google foto. в этом сервисе можно сохранять любое количество фотографий и видеоматериала.
и там вся толпа фотографий/видео представлена в куче и ее можно выбирать ползунком по времени хронологически

Добавлено через 39 секунд
Цитата Сообщение от YuS_2 Посмотреть сообщение
Суть задачи не очень мне понятна
мне надобно установить дату файла по имени файла, если этой даты нет в EXIF.
к этим странным именам файлов я не имею никакого отношения. эти имена делает сама аппаратура (фотокамеры,видеокамеры,телефоны,...)

мне не надо перемещать файлы. пускай они остаются там где и были))

ps я согласен что использовать имена файлов не продуктивно, но это единственная возможность установить дату файла если она была утеряна за долгое время при копировании информации с флешек/дисков/и тп.



собственно плюс того что даты будут установлены, в том что, в будущем программа отображающая изображения сможет разместить весь массив в хронологическом порядке. что уже будет очень даже удобно. сейчас такие средства набирают популярность. например google foto. в этом сервисе можно сохранять любое количество фотографий и видеоматериала.
и там вся толпа фотографий/видео представлена в куче и ее можно выбирать ползунком по времени хронологически
0
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
02.07.2017, 09:46 #13
Цитата Сообщение от telealex Посмотреть сообщение
я согласен что использовать имена файлов не продуктивно, но это единственная возможность установить дату файла если она была утеряна за долгое время при копировании информации с флешек/дисков/и тп.
Если использование имен файлов принципиально, то, для работы с таким количеством вариаций именования файлов, как вполне логично, сказали выше:
Цитата Сообщение от volodin661 Посмотреть сообщение
остаётся найти мотивацию всем этим заниматься

Цитата Сообщение от telealex Посмотреть сообщение
единственная возможность установить дату файла
Кстати, по поводу потери даты создания файла - это не совсем так. Если файл не курочили в различных редакторах, то дата изменения файла, чаще всего, соответствует дате фотографирования...
0
afanas72
0 / 0 / 0
Регистрация: 19.11.2017
Сообщений: 1
20.11.2017, 16:49 #14
Добрый день! Задача аналогично описанной в первом сообщении. Есть куча файлов с именами вида VID_20171107_211919.avi
Нужен .bat, который изменить дату и время создания (или изменения) этих файлов в текущей папке, взяв дату и время из имени файла.

Попробовал сделать по аналогии с предложенным вариантом
Windows Batch file
1
@powershell "gci '*_[1-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0-9].avi' -Recurse|%%{$_.CreationTime=Get-Date ((($x=$_.BaseName[-14..-1])[6,7]+'.'+$x[4,5]+'.'+$x[0..3]+' '+$x[8,9]+':'+$x[10,11]+':'+$x[12,13]) -join '')}"
Получаю сообщение об ошибке:
Get-Date : Не удается привязать параметр "Date". Не удается преобразовать значе
ние "7_.11.0171 21:19:19" в тип "System.DateTime". Ошибка: "Строка не распознан
а как действительное значение DateTime."
строка:1 знак:122
+ gci 'VID_[1-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0
-9].avi' -Recurse|%{$_.CreationTime=Get-Date <<<< ((($x=$_.BaseName[-14..-1])[
6,7]+'.'+$x[4,5]+'.'+$x[0..3]+' '+$x[8,9]+':'+$x[10,11]+':'+$x[12,13]) -join ''
)}
+ CategoryInfo : InvalidArgument: ( [Get-Date], ParameterBindin
gException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerSh
ell.Commands.GetDateCommand

Помогите разобраться, пожалуйста.

Добавлено через 23 часа 56 минут
Затупил спросонья, там же подчёркивание добавилось
Правильный код
Windows Batch file
1
@powershell "gci '*_[1-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0-9].avi' -Recurse|%%{$_.LastWriteTime=Get-Date ((($x=$_.BaseName[-15..-1])[6,7]+'.'+$x[4,5]+'.'+$x[0..3]+' '+$x[9,10]+':'+$x[11,12]+':'+$x[13,14]) -join '')}"
Вопрос снят
0
lessnik
0 / 0 / 0
Регистрация: 18.12.2017
Сообщений: 3
18.12.2017, 12:41 #15
Добрый день!
Прошу помочь и мне с подобной задачей..
Есть множество папок (с вложениями) вида:
2016.01.12 - текст
2012.06-07 - текст
2015.01 - текст
2017 - текст
Необходимо изменить дату создания/модификации/доступа всех папок (!только папок! не трогая файлы) на основании даты из имени этой папки.
В тех случаях где нет месяца или дня просто ставим значение "01".
Время можно для всех одно и то же, скажем 11:11:11
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
18.12.2017, 14:00 #16
Цитата Сообщение от lessnik Посмотреть сообщение
изменить дату создания/модификации/доступа
все три даты надо поменять?

некоторые вещи не будут иметь смысла, например:
после уже изменения даты создания, переместив эти папки в новое место - она изменится
откроете какую-то папку (посмотреть что там) после изменения даты модификации - она изменится

каков смысл этой задачи, в имени дата точно сохранится, рассортируйте просто по годам/месяцам
0
lessnik
0 / 0 / 0
Регистрация: 18.12.2017
Сообщений: 3
18.12.2017, 16:07 #17
Можно только создания/модификации..
Нужно для отслеживания изменений.
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
18.12.2017, 23:16 #18
оба ответа - абсурд
конкретной задачи так и нет
Цитата Сообщение от lessnik Посмотреть сообщение
Нужно для отслеживания изменений
это лишь мелкая деталь
0
lessnik
0 / 0 / 0
Регистрация: 18.12.2017
Сообщений: 3
19.12.2017, 15:05 #19
Что даст знание подробностей о том для чего мне это надо при редактирование приведенного здесь скрипта мне сложно понять!
Но раз уж так любопытно..
Есть архив (надеюсь не нужно подробностей о содержимом), который зашифрован с помощью EncFS.
В расшифрованном виде все даты естественно видны, но в зашифрованном все папки так сказать на одно лицо.
Этот зашифрованный архив зеркалится на облако.
Вот при необходимости скачать из это резервной копии и хочется ориентироваться по датам папок, а не тупо качать 600 гигов, чтобы потом расшифровав найти нужную папку занимающую меньше 1% всего объема.
Я уже было начал в ручную менять даты, но быстро надоело.. Нашел данную тему, посмотрел, что решение приведенное близко к тому, что нужно мне. Даже попробовал отредактировать приведенные скрипты, только ничего не вышло!
Еще какие подробности нужны?
0
19.12.2017, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2017, 15:05
Привет! Вот еще темы с решениями:

Сравнение даты создания файла с текущей датой
Добрый день! Помогите пожалуйста допилить скрипт: for %%i in (&quot;myfile&quot;)...

Переименование файла с подстановкой в название имени компьютера, даты и времени
Здравствуйте! Нужно переименовать файл list.txt в compname_date_time.txt в...

Время создания файла с секундами
С помощью bat-файла в определенном каталоге необходимо читать дату и время...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru