Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и переименование файлов с помощью BATника

Ответить
Настройки темы
CMD/BAT - Поиск и переименование файлов с помощью BATника

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите написать!
Нужен батник, который бы сканировал определенный путь (который пропишем) на изминенные СЕГОДНЯ (текущая дата) файлы, смотрел на имя файла, и на дату изменения, если файл имеет имя тест.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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
ОК, а как вы поймёте, кто изменял? »
Это не нужно знать кто, щас попытаюсь обьяснить

Есть общая папка, в которой работают 3-4 человека, в день открывается/добавляется/изменяется от 30-50 файлов, и сохранять ручками с текущей датой все то что ты открыл/изменил/сохранил не хочется, просто нужно запустить батник, он все изменит (все что ты сохранил/изменил/добавил) на текущую дату и все. В этой общей папке видно кто под каким паролем их сохранял/изменял, нам по большому счету не нужно, нужно лишь изменять на текущую дату изменения и все

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

Отправлено: 10:52, 01-09-2021 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6483
Благодарности: 1462

Профиль | Отправить PM | Цитировать


Всё равно непонятно, зачем переименовывать. Если нужно просто получать отчёт об изменённых файлах за сегодня в целях мониторинга, ничего переименовывать не требуется.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:56, 01-09-2021 | #12


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Всё равно непонятно, зачем переименовывать. »
ну вот нужно) такая цель...и нужно побольшому счету просто добавить 2 строчки в код, что то пробую пробую но видимо не хватает знаний в cmd...((

Отправлено: 11:07, 01-09-2021 | #13


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


ovrtke,
Цитата ovrtke:
Такой вот error, и не нашел где прописать путь сканирования файлов ? »
Я считал, что это очевидно. У меня
Код: Выделить весь код
Set "BoxIn=Z:\Box_In"
Вы напИшите свой путь. Единственное, если в пути кириллица, сохраните батник в 866 кодировке.
Я делаю тупо и дубОво: я анализирую сегодняшнюю дату (%Date%) c датой/временем модификации файла из Dir (%%~tf), усеченной до даты. Выделяю имя файла: если оно без даты "ггммдд " впереди, то беру его как есть "имябездаты", а если впереди дата, её из имени отбрасываю, получаю "имябездаты"и переименовываю файл с исходным именем в "ггммдд имябездаты" и не завихряюсь.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 11:13, 01-09-2021 | #14


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Вот вариант, менее чувствительный к формату отображения даты в системе. По крайней мере ггммдд здесь берётся без зависимости от него.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Mask=*.xlsx"
	Set "DateMask=^[2-9][0-9][0-1][0-9][0-3][0-9] .*"

	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "MyDate=%%d" &Call Set "MyDate=%%MyDate:~2,6%% "

	Pushd "%BoxIn%" ||(Echo Filder "%BoxIn%" not found &Pause &Exit /B 1) 

	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /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%%"
				Call ReName "%%f" "%MyDate%%%Name%%"
				
			) Else (
				GoTo :Continue
			)
		) 
	)
	:Continue
	Popd
pause
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 11:36, 01-09-2021 | #15


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
megaloman »
Заработало, спасибо, попытаюсь доработать,а мой код который выше реально дописать ?

Отправлено: 11:37, 01-09-2021 | #16


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Цитата ovrtke:
,а мой код который выше реально дописать »
Я писатель, а не читатель , возможно кому-то захочется.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:40, 01-09-2021 | #17


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


thx to cooperate )

а реально еще вывести в окно cmd кол-во измененных файлов ?

Отправлено: 11:44, 01-09-2021 | #18


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Screenshot_8.jpg
(13.4 Kb, 7 просмотров)

Еще проблемка, пересохранил в 866 кодировке, все равно не хочет. Путь такой:
"c:\Users\borisov.a\Documents\Bitrix24\КМ НЗЧ\210831 ЕВРОПА\210830 Заказы УКРАИНА\"

Отправлено: 12:08, 01-09-2021 | #19


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


папка Bitrix24 - это диск с битрикса

Отправлено: 12:09, 01-09-2021 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и переименование файлов с помощью BATника

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход