求一批处理命令,将第三级文件夹里的各种文件重命名为第一级文件夹的名字

原来 000/111/222/333.txt
效果 000/111/222/111.txt
要保留后缀
以下为核心的代码 dir为根文件夹路径相当于上面的000
for /f "delims=" %%i in ('dir /ad /b %dir%\') do (
set path=%%~dpi
set path=!path:~0,-1!
for /f "delims=" %%j in ("!path!") do (
set path1=%%~dpj
set path1=!path1:~0,-1!
for /f "delims=" %%z in ("!path1!") do (
set full=%%~dpnxz
set exten=%%~xz
if /i "!isrun!"=="n" (
echo ren "!full!" "!path!!exten!"
) else (
ren "!full!" "!path!!exten!"
echo 更名为:"!path!!exten!"
)
)
)
)
道理我都懂可是程序调不通

思路:创建一个对象保存一级文件夹的名字,打开二级文件夹,循环遍历文件,判断文件夹和文件。问题:各种文件,重名问题。

行吧我知道了
最后还得靠自己这c币白冲了

@echo off
:start
::开始批处理文件中环境改动的本地化操作
::启动变量延迟
setlocal enabledelayedexpansion
title 文件重命名
set isrun=n

echo 请把包含要处理的文件的[文件夹]拖动到此处,回车确定
::set /p让用户自己输入变量的值
set dir=n&set /p dir=
if "%dir:"=%"=="n" cls&goto start
cls&echo ====================================
:run
for /f "delims=" %%i in ('dir /a:d /b %dir%\') do (
rem 文件路径
set path=%%~ni
for /f "delims=" %%j in ('dir /s /b /a:-d %dir%!path!*.flv') do (
set full=%%~dpnxj
set exten=%%~xj
rem set path=!path:~0,-1!
if /i "!isrun!"=="n" (
echo ren "!full!" "!path!!exten!"
) else (
ren "!full!" "!path!!exten!"
echo 更名为:"!path!!exten!"
)
)
)
echo ====================================
if /i "%isrun%"=="n" (
echo 即将执行以上操作,是否执行[Y/N]
set isrun=n&set /p isrun=
if /i "!isrun!"=="y" ( goto run ) else ( cls&goto start )
) else (
echo.&echo 更名完成!
echo 任意键返回&pause>nul&cls&goto start
)