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

Показать сообщение отдельно

Ветеран


Contributor


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

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


ovrtke, Поиск надо делать вверх ногами и рекурсия не нужна. Переименование файлов делается "на раз", с цепочкой папок надо было сообразить.
Поиск в папках произвольной вложенности
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
	Set "BoxIn=Z:\Users\borisov.a\Documents\Bitrix24\КМ НЗЧ"

	Set "Mask=*.xlsx"
	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) 

	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"
	)

	Echo ======	Changed %NTotal% files today
	Popd
pause
Exit /B 0

:ReFiles
	Set /A N=0
	Pushd "%~dp1" ||Exit /B 0
		For /F "usebackq delims=" %%f In (`2^>nul Dir %1 /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 "%~dp1%%f" "%MyDate%%%Name%%"
					Call Set /A N+=1
					Call Echo %%N%%	"%~dp1%%f"	"--->""%MyDate%%%Name%%"
				) Else (GoTo :Continue)
			) 
		)
	:Continue
	Set /A %~2=%N%
	Set /A NTotal+=%N%
	Popd
	Set "DirName=%~dp1"
	If Exist "%~dp1%MyDate%*.*" Call :Redir "%%DirName:~0,-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, 03-09-2021 в 15:09.

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

Отправлено: 13:23, 03-09-2021 | #35