проверил, работает, проверяет, изменяет имя, по крайней мере первого уровня (_01.mat)
а как добавить ещё одну (или несколько) папку в обработку помимо Material3, пытаюсь сделать:
Код:
@echo off
SETLOCAL EnableDelayedExpansion
for /f "delims=" %%d in ('dir/b/s/ad "Material3.*"') do if "%%~xd"=="" (
for /f "delims=" %%f in ('dir/b/s/a-d "%%d"') do (
set "$d=%%~dpf"& set "$d=!$d:%%~dpd=%%~dpd..\..\!"
call:MoveRen "%%f" "!$d!"
))
:MoveRen %source_file% %destin_folder%
::-------------------------------------
set "$s="& set "$n="& if "%~1"=="" GoTo:EOF
if not exist "%~2" md "%~2"||exit/b 1
:MoveRen_Loop
if not exist "%~2%~n1%$s%%~x1" move "%~1" "%~2%~n1%$s%%~x1"& GoTo:EOF
fc/b "%~1" "%~2%~n1%$s%%~x1">nul&&(del/f/q "%~1"& GoTo:EOF)
set/a "$n+=1"& set "$s=0!$n!"& set "$s=_!$s:~-2!"
GoTo:MoveRen_Loop
for /f "delims=" %%d in ('dir/b/s/ad "MaterialConst.*"') do if "%%~xd"=="" (
for /f "delims=" %%f in ('dir/b/s/a-d "%%d"') do (
set "$d=%%~dpf"& set "$d=!$d:%%~dpd=%%~dpd..\..\!"
call:MoveRen "%%f" "!$d!"
))
:MoveRen %source_file% %destin_folder%
::-------------------------------------
set "$s="& set "$n="& if "%~1"=="" GoTo:EOF
if not exist "%~2" md "%~2"||exit/b 1
:MoveRen_Loop
if not exist "%~2%~n1%$s%%~x1" move "%~1" "%~2%~n1%$s%%~x1"& GoTo:EOF
fc/b "%~1" "%~2%~n1%$s%%~x1">nul&&(del/f/q "%~1"& GoTo:EOF)
set/a "$n+=1"& set "$s=0!$n!"& set "$s=_!$s:~-2!"
GoTo:MoveRen_Loop
но получается только Material3, остальные скрипт не трогает.