@komino

Как найти и переименовать файл?

Вероятно, наипростейшая задача, с наипростейшим решением, но я впервые сталкиваюсь с CMD/BAT.

Есть Условная папка C:\TEMP, в которой переодически появляются файлы (раз в месяц с помощью bat скрипта закидываются excel файлы). Они появляются все с одними и теми же названиями, но с рандомными числами. Например:
"pattern_52773625_1.xls",
в след. месяц тот же pattern, но с иными цифрами.
--
"shablon_62483624_1.xls",
тоже самое, что и с pattern.
--
"reports_71439264_1.xls",
тоже самое, что и с pattern.
--

Задача: Переименовать pattern_52773625_1 в "pattern 02-10-2021.xls" (02-10-2021 - Дата на момент отработки скрипта. Остальные файлы переименовываются таким же образом.
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
EPIDEMIASH
@EPIDEMIASH
Человек швейцарский нож
А почему не хотите например на ps написать что-то подобное?

Get-ChildItem -Path $env:C:\TEMP\ -Filter "*.xls*" -Recurse | Where-Object {$_.LastWriteTime -ge $date} | Foreach {"$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}


Upd: немного переписал, ищет файлы за сегодняшнюю дату и в имя добавляет текущую дату.

Если к примеру хотим за последнюю неделю которые были изменены, меняем условие

where-object {$_.LastWriteTime -gt ((Get-Date).adddays(-7))}
Ответ написан
@komino Автор вопроса
for %%i in ('dir /b c:\temp *pattern*') do (for %%j in ('date /t') do ('move /y c:\temp\%%i new_folder\pattern-%%j))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы