namejm (闭关中)当前离线
批处理代码写手
荣誉版主
@echo off :: code by namejm bbs.bathome.net CMD@XP_SP2 2008.8.4 color 1f mode con lines=30 set TT=文件分类整理器 rem ======= 设置选项 ======= :set_source cls title %TT%-当前目录:"%cd%" echo.&echo. call :note echo.&echo. echo 请把要处理的文件夹拉到本窗口(直接回车将处理当前目录): echo. set "source=%cd%" set /p source= if defined source ( set "source=%source:"=%" ) else goto set_source if "%source%"=="1" goto set_source if "%source%"=="0" exit if exist "%source%" ( pushd "%source%" 2>nul && popd || goto set_source ) :set_destination title %TT%-源文件路径:"%source%" cls call :note echo. echo 请输入保存位置的绝对或相对路径,或把目的文件夹拖到本窗口 echo. echo 直接回车将处理当前目录; echo. echo 若目的路径从属于或等同于源路径,或存在同名的非文件夹路径 echo. 则必须重新选择: echo. set destination= set /p destination= if defined destination set "destination=%destination:"=%" if defined destination ( if "%destination%"=="1" goto set_source if "%destination%"=="0" exit ) else goto set_destination echo "%destination%"|findstr ":" || ( set "destination=%cd%\%destination%" ) :: 检测是否存在同名的非文件夹路径 if exist "%destination%" ( pushd "%destination%" 2>nul && popd || goto set_destination ) :: 判断目的路径是否从属于或等同于源路径 set flag= call set "flag=%%destination:%source%=%%" if not defined flag goto set_destination if "%flag:~0,1%"=="\" goto set_destination md "%destination%" 2>nul :set_type title %TT%-目的路径:"%destination%" cls echo.&echo. call :note echo. echo 请输入要处理的文件类型,多个类型以空格分隔 echo. echo (如:rar exe,直接回车将处理所有类型): echo. set type= set /p type= if defined type ( if "%type%"=="1" goto set_destination if "%type%"=="0" exit for %%i in (%type%) do set /p type=*.%%i <nul>nul ) else set type=*.* rem ======= 按文件类型复制文件 ======= cd /d "%source%" for /f "delims=" %%i in ('dir /a-d /b /s %type% 2^>nul') do ( title %TT%-正在处理 "%%i" set "file_souce=%%i" set "file_destination=%destination%\%%~xi文件\%%~nxi" md "%destination%\%%~xi文件" 2>nul if not exist "%destination%\%%~xi文件\%%~nxi" ( copy "%%i" "%destination%\%%~xi文件">nul ) else ( set num=0 call :rename "%%i" "%destination%\%%~xi文件\%%~ni" "%%~xi" ) ) exit rem ======= 重命名同名文件 ======= :rename set /a num+=1 set "file_source=%~1" set "file_destination=%~2_%num%%~3" if not exist "%file_destination%" ( copy "%file_source%" "%file_destination%">nul ) else goto rename goto :eof :note echo ╭────────╮ echo ╭─────────┤ 功 能 说 明 ├─────────╮ echo │ ╰────────╯ │ echo │ │ echo │ 本程序能对当前目录及其所有子目录下的文件进行 │ echo │ │ echo │ 归类,具体效果如下: │ echo │ │ echo │ 在指定目录下,以指定的文件类型名为文件夹名 │ echo │ │ echo │ 建立形如 .exe文件、.rar文件 之类的文件夹,不同 │ echo │ │ echo │ 类型的文件复制到对应的文件夹下,并自动重命名同 │ echo │ │ echo │ 名文件:如有重名,则直接在文件名后加"_序号"。 │ echo │ │ echo ╰────────────────────────────╯ echo. echo 返回上一步请按 1 退出请按 0 echo. ───────────────────────────── goto :eof复制代码
wdh123 当前离线
列兵
TOP
狱渊 当前离线
中尉
foxJL 当前离线
pusofalse 当前离线
zhoumeng 当前离线
二级士官
鹤冲天 当前离线
贵宾
batman 当前离线
考官