|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и переименование файлов с помощью BATника |
|
CMD/BAT - Поиск и переименование файлов с помощью BATника
|
Новый участник Сообщения: 29 |
Помогите написать!
Нужен батник, который бы сканировал определенный путь (который пропишем) на изминенные СЕГОДНЯ (текущая дата) файлы, смотрел на имя файла, и на дату изменения, если файл имеет имя тест.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 /? Помогите дописать)) |
|
Отправлено: 15:36, 31-08-2021 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать megaloman, что то не видит совсем файлы (
|
Отправлено: 08:37, 16-09-2021 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать ovrtke, я предполагал такую структуру:
Переименование корневой папки и обработка файлов в ней не предполагалось. В корневой Папке должны быть подпапки. |
------- Отправлено: 08:59, 16-09-2021 | #42 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Папка - не трогаем
Папка 1 - переименовываем файлы или есть или нет Папка 1.1 файлы или есть или нет Папка 1.1.1 ..................... примерно так сейчас ? |
Последний раз редактировалось ovrtke, 16-09-2021 в 09:18. Отправлено: 09:09, 16-09-2021 | #43 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать ovrtke,
Цитата ovrtke:
![]() |
|
------- Отправлено: 09:31, 16-09-2021 | #44 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
------- Отправлено: 09:56, 16-09-2021 | #45 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, чуток допилил, все работает, все огонь!
DJ Mogarych, спасибо за уточнение, но нет, знаю) просто когда есть бета версия одного файла всегда найдутся те которые хотят чучуть дороботать и улучшить, и изменить вводные данные которые были изначально. Но все получилось, еще раз огромаднейшее комраду megaloman за содействие и помощь в оказании написания сего батника |
Отправлено: 10:16, 16-09-2021 | #46 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать ovrtke,
Шолом-Алейхем: "Если нельзя, но очень хочется, то можно"
@Echo Off
cls
>nul Chcp 1251
Set "BoxIn=Z:\Users\borisov.a\Documents\Bitrix24\КМ НЗЧ"
Set Mask="*.xlsx" "*.doc" "*.txt"
Set "DateMask=^[2-9][0-9][0-1][0-9][0-3][0-9] .*"
Pushd "%BoxIn%" ||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 1)
Echo +++ Processing files Mask=%Mask% Folder="%BoxIn%"
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "MyDate=%%d" &Call Set "MyDate=%%MyDate:~2,6%% "
Set /A Ntotal=0
For /F "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%\*.*" /B /A:D /S ^|Sort /R`) Do (
Set /A Na=0
Call :ReFiles "%%d" "%Mask%" "Ni"
)
Call :ReFiles "%BoxIn%" "%Mask%" "Ni"
Popd
Echo === Changed %NTotal% files today. Folder="%BoxIn%" Mask=%Mask%
pause
Exit /B 0
:ReFiles
Set /A N=0
Pushd "%~1" ||Exit /B 0
For /F "usebackq delims=" %%f In (`2^>nul Dir %~2 /B /A:-D /O:-D /T:W`) Do (
For /F "delims= " %%d In ("%%~tf") Do (
If "%Date%"=="%%d" (
Set "Name=%%f"
Call Echo %%Name%%| >nul 2>&1 FindStr /I /X /R /C:"%DateMask%" &&Call Set "Name=%%Name:~7%%"
>nul Call ReName "%~1\%%f" "%MyDate%%%Name%%"
Call Set /A N+=1
Call Echo %%N%% "%~1\%%f" "--->""%MyDate%%%Name%%"
) Else (GoTo :Continue)
)
)
:Continue
Set /A %~3=%N%
Set /A NTotal+=%N%
Popd
If Exist "%~1\%MyDate%*.*" Call :Redir %1
Exit /B 0
:ReDir
Set "Name=%~nx1"
Call Echo %%Name%%| >nul 2>&1 FindStr /I /X /R /C:"%DateMask%" &&Call Set "Name=%%Name:~7%%"
>nul Call ReName %1 "%MyDate%%%Name%%" &&Call Echo === "%~nx1" "--->""%MyDate%%%Name%%" ||Echo ??? %1
Exit /B 0
|
------- Последний раз редактировалось megaloman, 16-09-2021 в 11:37. Отправлено: 11:08, 16-09-2021 | #47 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Шолом-Алейхем: "Если нельзя, но очень хочется, то можно"
Круто! Спасибо |
Отправлено: 12:20, 16-09-2021 | #48 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Копирование папки с файлами с помощью batника | Stgean | Скриптовые языки администрирования Windows | 6 | 19-04-2019 12:00 | |
CMD/BAT - Поиск и копирование файлов с помощью пакетного файла. | Svtln | Скриптовые языки администрирования Windows | 4 | 09-04-2017 18:03 | |
CMD/BAT - Архивирование, переименование и перемещение файлов с помощью BAT-файла | kirillius | Скриптовые языки администрирования Windows | 7 | 13-05-2016 12:57 | |
CMD/BAT - Поиск, переименование и создание | Дима_Качуров@vk | Скриптовые языки администрирования Windows | 2 | 25-07-2012 15:27 | |
[решено] поиск и переименование файлов | exo | Хочу все знать | 5 | 26-08-2011 17:05 |
|