set "file_route=%cd%" for /f "delims=" %%i in ('dir /a-d /b /s /oe') do ( set "nx_name=%%~nxi" call :build_dir %%~xi "%%~dpi" set file_type=%%~xi set "file_route=%%~dpi" ) goto :eof
rem ======= 按文件类型创建文件夹 ======= :build_dir set types=%1 set route=%2 set types=%types:~1% set "route=%route:~1,-1%" set "cd_name=%route:~0,-1%"
rem ======= 获取文件所在的目录名 ======= :get_cd_name set "cd_name_tmp=%cd_name:\=%" set "cd_name=%cd_name:*\=%" if not "%cd_name%"=="%cd_name_tmp%" goto get_cd_name
:: 通过对比文件类型名和目录名来判断哪些文件已经整理过 if "%cd_name%"=="%types%文件" goto :eof
:: 判断文件所在位置是否发生了变化 if %2=="%file_route%" (set chang_dir=) else set chang_dir=yesset file_type=
:: 判断要处理的文件是不是批处理文件自身 if "%route%%nx_name%"=="%~f0" (set file_self=yes) else set file_self=
:: 判断文件类型是否发生了变化 if "%1"=="%file_type%" (set same_type=yes) else set same_type=