|
|
发表于 2025-6-3 18:23:27
|
显示全部楼层
- @echo off
- setlocal enabledelayedexpansion
- :: 设置目标目录
- set "DstDir=E:\TQ"
- :: 如果没有目标目录则创建
- if not exist "%DstDir%" md "%DstDir%"
- :: 判断是否有拖拽参数传入
- if "%~1"=="" (
- echo 没有拖拽文件夹,使用默认逻辑处理当前目录下包含 A1 的文件...
- set "file_name=A1"
- call :ProcessFiles *%file_name%*
- ) else (
- echo 检测到拖拽的路径:
- :LoopThroughArgs
- if not "%~1"=="" (
- echo 正在处理路径: %~1
- :: 判断是否为文件还是文件夹
- if exist "%~1\" (
- echo 是一个文件夹,直接处理
- pushd "%~1"
- ) else (
- echo 是一个文件,将处理其所在文件夹
- pushd "%~dp1"
- )
- call :ProcessFiles *
- popd
- shift
- goto LoopThroughArgs
- )
- )
- pause
- exit /b
- :: 子程序:处理指定路径下的所有 *.jpg 文件
- :ProcessFiles
- for /f "delims=*" %%a in ('dir /b /s /a-d *.jpg') do (
- set "_path=%%~dpa"
- setlocal enabledelayedexpansion
- if /i "!_path:%DstDir%=!" equ "!_path!" (
- set "_path=!_path:%~dp0=!"
- set "_path=!_path:\=-!"
- if not exist "%DstDir%\!_path:~0,-1!\" md "%DstDir%\!_path:~0,-1!\"
- echo Y|move "%%a" "%DstDir%\!_path:~0,-1!\%%~nxa" >nul 2>&1
- )
- endlocal
- )
- goto :eof
复制代码 |
|