Показать полную графическую версию : Поиск и переименование файлов с помощью BATника
megaloman, что то не видит совсем файлы (
megaloman
16-09-2021, 08:59
ovrtke, я предполагал такую структуру:
Папка
Папка 1
файлы или есть или нет
Папка 1.1
файлы или есть или нет
Папка 1.1.1
.....................
Папка 2
файлы или есть или нет
Папка 2.1
файлы или есть или нет
Папка 2.1.1
......
Переименование корневой папки и обработка файлов в ней не предполагалось. В корневой Папке должны быть подпапки.
Папка - не трогаем
Папка 1 - переименовываем
файлы или есть или нет
Папка 1.1
файлы или есть или нет
Папка 1.1.1
.....................
примерно так сейчас ?
megaloman
16-09-2021, 09:31
ovrtke, а если так ? » Можно, но нельзя :). Я не знаю, зачем Вам скрипт. Но у Вас имя корневой папки прописано в батнике. И, если оно изменится после обработки, то при следующем запуске батника она найдена не будет, или ручками придётся ее перепрописать в коде - полный угар.
DJ Mogarych
16-09-2021, 09:56
Я не знаю, зачем Вам скрипт. »
Автор темы, по всей видимости, тоже.
megaloman, спасибо, чуток допилил, все работает, все огонь!
DJ Mogarych, спасибо за уточнение, но нет, знаю) просто когда есть бета версия одного файла всегда найдутся те которые хотят чучуть дороботать и улучшить, и изменить вводные данные которые были изначально. Но все получилось, еще раз огромаднейшее комраду megaloman за содействие и помощь в оказании написания сего батника
megaloman
16-09-2021, 11:08
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
Файлы в корневой папке переименовывываются, а сама папка нет. Добавил всего одну строку. Элементарно сделать , чтобы и папка переименовывалась, но это уже обсудили.
Шолом-Алейхем: "Если нельзя, но очень хочется, то можно"
Круто! Спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.