CMD/BAT - Поиск и переименование файлов с помощью BATника
-
ovrtke
CMD/BAT - Поиск и переименование файлов с помощью BATника
Помогите написать!
Нужен батник, который бы сканировал определенный путь (который пропишем) на изминенные СЕГОДНЯ (текущая дата) файлы, смотрел на имя файла, и на дату изменения, если файл имеет имя тест.xlsx и изменен сегодняшней датой, то переименовывал на 210831 тест.xlsx (текущей датой), если есть файл с именем 210826 тест2.xlsx, который менялся 5 дней назад, и сегодня повторно изменился, то менял первые 6 символов на текущую дату изменения, если маски в виде 210826 нет вообще в имени файла то переименовывал в текущую дату изменения. Как я вижу, +-
@echo off
set thePATH=C:\temp
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set mydate=%4%%3%%2%%1
ren test.xlsx %mydate%test.xlsx
Еще думаю нужно копать сюда -
Отслеживать изменения в файлах можно с помощью аттрибута "архивный".
Этот аттрибут выставляется автоматически ОС при любом изменении файла.
Вывести список файлов, у которых аттрибут "архивный" с помощью dir /a:a
Получить дату/время изменения файла можно с помощью модификаторов переменной цикла. Возможно for /
После переименования файла нужно снимать аттрибут архивный - это будет признак того, что файл уже обработан и в следующий раз он в обработку не попадет (если не будет модифицирован). Сделать это можно командой возможно attrib /?
Помогите дописать))
Нужен батник, который бы сканировал определенный путь (который пропишем) на изминенные СЕГОДНЯ (текущая дата) файлы, смотрел на имя файла, и на дату изменения, если файл имеет имя тест.xlsx и изменен сегодняшней датой, то переименовывал на 210831 тест.xlsx (текущей датой), если есть файл с именем 210826 тест2.xlsx, который менялся 5 дней назад, и сегодня повторно изменился, то менял первые 6 символов на текущую дату изменения, если маски в виде 210826 нет вообще в имени файла то переименовывал в текущую дату изменения. Как я вижу, +-
@echo off
set thePATH=C:\temp
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set mydate=%4%%3%%2%%1
ren test.xlsx %mydate%test.xlsx
Еще думаю нужно копать сюда -
Отслеживать изменения в файлах можно с помощью аттрибута "архивный".
Этот аттрибут выставляется автоматически ОС при любом изменении файла.
Вывести список файлов, у которых аттрибут "архивный" с помощью dir /a:a
Получить дату/время изменения файла можно с помощью модификаторов переменной цикла. Возможно for /
После переименования файла нужно снимать аттрибут архивный - это будет признак того, что файл уже обработан и в следующий раз он в обработку не попадет (если не будет модифицирован). Сделать это можно командой возможно attrib /?
Помогите дописать))
-
ovrtke
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
1. А зачем все эти переименования файлов, если дату изменения файла легко вывести и так, и произвести необходимые манипуляции? Какая конечная цель этого переименования?
2. Чем геморроиться с батниками, осваивайте Powershell, где работать с метками файлов на порядок проще.
Например, вывести имена файлов и даты изменения и отсортировать по дате изменения:
Код:
2. Чем геморроиться с батниками, осваивайте Powershell, где работать с метками файлов на порядок проще.
Например, вывести имена файлов и даты изменения и отсортировать по дате изменения:
Код:
Код: Выделить всё
dir "C:\Windows" |select name,LastWriteTime |sort lastwritetime
Name LastWriteTime
---- -------------
IsUn0419.exe 07.10.1998 18:14:18
IsUninst.exe 29.10.1998 16:45:06
WLXPGSS.SCR 31.03.2014 22:34:22
system.ini 10.07.2015 14:02:40
CSC 08.02.2016 10:38:14
eReg.dat 07.03.2016 20:31:28
DirectX.log 20.03.2016 10:14:34
popcinfo.dat 19.03.2017 9:24:05
UpdateAssistantV2 14.06.2017 22:12:14
VPNInstall.MIF 06.04.2018 19:25:42
DDACLSys.log 04.05.2018 0:49:16
pyw.exe 20.10.2018 14:06:16
py.exe 20.10.2018 14:06:16
pyshellext.amd64.dll 20.10.2018 14:08:32
InfusedApps 23.12.2018 22:57:15
VPNUnInstall.MIF 27.12.2018 20:39:56
RtlExUpd.dll 15.04.2019 5:13:56
progress.ini 06.12.2019 19:10:36
write.exe 07.12.2019 0:29:00
и т. д.-
ovrtke
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
megaloman, не могу понять как заставить переходить по этому пути: "C:\Users\%USERNAME%\Documents\Bitrix24\КМ НЗЧ\210831 ЕВРОПА\210830 Заказы УКРАИНА\.."
тут есть кириллица, сохранил в кодировке 866, все равно не видит
Может быть связано с тем что папка Bitrix24 это как виртуальный диск ?
тут есть кириллица, сохранил в кодировке 866, все равно не видит
Может быть связано с тем что папка Bitrix24 это как виртуальный диск ?
-
ovrtke
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
Цитата DJ Mogarych:
к
Дело в том, что есть необходимость переименовывать файлы которые изменялись текущей датой, это понятно что можно и тоталом смотреть измененные, но ручками не хочется сохранять в формат - 210901 тест.xlsx, а хочется просто сохранить test.xlsx запустить батник и он сам переименует этот файлик (и кучу других) в формат 210901 test.xlsx
Цитата megaloman:
Предполагается, что формат даты в системе имеет вид дд.мм.гггг
Иначе понадобятся небольшие корректировки
А реально переделать в формат даты - 21 (год) 09 ( месяц) 01 (день) пробел тест.xlsx, выглядить должен так - 210901 test.xlsx
Еще ньюанс, если файл уже был изменен например вчера и имеет имя - 210831 тест.xlsx, я его открываю сегодня, т.е. 01.09, сохраняю и запускаю батник, он должен находить имена файлов которые начинаются на 21**** и заменять эти символы на текущую дату, дата использования батника будет с 01.09, т.е. потенциально файлы все будут начинаться на 21(м)(д) имя.расширение
к
CMD/BAT - Поиск и переименование файлов с помощью BATника
Дело в том, что есть необходимость переименовывать файлы которые изменялись текущей датой, это понятно что можно и тоталом смотреть измененные, но ручками не хочется сохранять в формат - 210901 тест.xlsx, а хочется просто сохранить test.xlsx запустить батник и он сам переименует этот файлик (и кучу других) в формат 210901 test.xlsx
Цитата megaloman:
Предполагается, что формат даты в системе имеет вид дд.мм.гггг
Иначе понадобятся небольшие корректировки
CMD/BAT - Поиск и переименование файлов с помощью BATника
А реально переделать в формат даты - 21 (год) 09 ( месяц) 01 (день) пробел тест.xlsx, выглядить должен так - 210901 test.xlsx
Еще ньюанс, если файл уже был изменен например вчера и имеет имя - 210831 тест.xlsx, я его открываю сегодня, т.е. 01.09, сохраняю и запускаю батник, он должен находить имена файлов которые начинаются на 21**** и заменять эти символы на текущую дату, дата использования батника будет с 01.09, т.е. потенциально файлы все будут начинаться на 21(м)(д) имя.расширение
- Вложения
-
[Расширение jpg было запрещено, вложение больше недоступно.]
-
ovrtke
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
Цитата ovrtke:
необходимость переименовывать файлы которые изменялись текущей датой
Вот и вопрос - что это за необходимость такая. Для чего переименовывать, если метку даты и так можно извлечь из соответствующего поля?
необходимость переименовывать файлы которые изменялись текущей датой
CMD/BAT - Поиск и переименование файлов с помощью BATника
Вот и вопрос - что это за необходимость такая. Для чего переименовывать, если метку даты и так можно извлечь из соответствующего поля?
- Вложения
-
[Расширение jpg было запрещено, вложение больше недоступно.]
-
[Расширение jpg было запрещено, вложение больше недоступно.]
-
DJ Mogarych
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
1. А зачем все эти переименования файлов, если дату изменения файла легко вывести и так, и произвести необходимые манипуляции? Какая конечная цель этого переименования?
2. Чем геморроиться с батниками, осваивайте Powershell, где работать с метками файлов на порядок проще.
Например, вывести имена файлов и даты изменения и отсортировать по дате изменения:
Код:
2. Чем геморроиться с батниками, осваивайте Powershell, где работать с метками файлов на порядок проще.
Например, вывести имена файлов и даты изменения и отсортировать по дате изменения:
Код:
Код: Выделить всё
dir "C:\Windows" |select name,LastWriteTime |sort lastwritetime
Name LastWriteTime
---- -------------
IsUn0419.exe 07.10.1998 18:14:18
IsUninst.exe 29.10.1998 16:45:06
WLXPGSS.SCR 31.03.2014 22:34:22
system.ini 10.07.2015 14:02:40
CSC 08.02.2016 10:38:14
eReg.dat 07.03.2016 20:31:28
DirectX.log 20.03.2016 10:14:34
popcinfo.dat 19.03.2017 9:24:05
UpdateAssistantV2 14.06.2017 22:12:14
VPNInstall.MIF 06.04.2018 19:25:42
DDACLSys.log 04.05.2018 0:49:16
pyw.exe 20.10.2018 14:06:16
py.exe 20.10.2018 14:06:16
pyshellext.amd64.dll 20.10.2018 14:08:32
InfusedApps 23.12.2018 22:57:15
VPNUnInstall.MIF 27.12.2018 20:39:56
RtlExUpd.dll 15.04.2019 5:13:56
progress.ini 06.12.2019 19:10:36
write.exe 07.12.2019 0:29:00
и т. д.-
megaloman
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
Цитата megaloman:
Предполагается, что формат даты в системе имеет вид дд.мм.гггг
Иначе понадобятся небольшие корректировки.
Такой вот error, и не нашел где прописать путь сканирования файлов ?
Предполагается, что формат даты в системе имеет вид дд.мм.гггг
Иначе понадобятся небольшие корректировки.
CMD/BAT - Поиск и переименование файлов с помощью BATника
Такой вот error, и не нашел где прописать путь сканирования файлов ?
-
ovrtke
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
Цитата DJ Mogarych:
Вот и вопрос - что это за необходимость такая. Для чего переименовывать, если метку даты и так можно извлечь из соответствующего поля?
Нужно мониторить кто что изменял
Вот и вопрос - что это за необходимость такая. Для чего переименовывать, если метку даты и так можно извлечь из соответствующего поля?
CMD/BAT - Поиск и переименование файлов с помощью BATника
Нужно мониторить кто что изменял
-
megaloman
Re: CMD/BAT - Поиск и переименование файлов с помощью BATника
ovrtke, речь идет о формате даты в системе. То есть, как отображается дата в командах
Echo %date%
Dir.
Результат батника - "ггммдд имяфайла.xlsx"
где ггммдд сформирован из сегодняшней даты.
Пробуйте, спрашивайте.
Echo %date%
Dir.
Результат батника - "ггммдд имяфайла.xlsx"
где ггммдд сформирован из сегодняшней даты.
Пробуйте, спрашивайте.
-
DJ Mogarych