[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
@echo off

rem 参数设置,运行前请手动修改.
rem 源文件夹
set src=D:\abc
rem 目标文件夹
set dst=D:\bbh

rem 主体
rem ================================================

rem 要求源目录和目标路径已存在.
rem 否则,结束批处理.
rem 请建立相应的文件夹后重新运行批处理
if not exist %src% echo path %src% not exist & goto :eof
if not exist %dst% echo path %dst% not exist & goto :eof

setlocal EnableDelayedExpansion

rem 按规则重命名并移动所有.jpg .JPG文件
rem 如果指定的源目录下有子目录,所有子目录都会被忽略.
for   %%I in ( %src%\*.jpg %src%\*.JPG ) do (
        rem 按规则生成新文件名
        set fname=%%~nI
        set fdst=!fname:_=!_10.jpg
        set fdst=%dst%\!fdst!
       
        rem 有可能产生重名文件,如 a_b.jpg 和 a_b_.jpg
        rem 都对应 ab_10.jpg
        if exist !fdst! (
                rem 对重名文件.增加递增的后缀_dddd
                rem 形如 ab_10_1.jpg
                set count=0
                set new_fdst=!fdst:~0,-4!
                if exist !new_fdst!_*.jpg (
                        dir /b !new_fdst!_*.jpg | sort /r > tmp.txt
                        set /p count=<tmp.txt
                        rem 此处限制了count后缀最大为 99999999 (8个9),
                        rem 多于此数目,运行结果会出错
                        set count=!count:_=       !
                        set count=!count:~-7,3!
                )
                set /a count+=1
                set new_fdst=!new_fdst!_!count!.jpg
                echo new_fdst=!new_fdst!
                move /-Y %%~fI  !new_fdst! > nul
        ) else move /-Y %%~fI  !fdst! > nul
)
if exist tmp.txt del tmp.txt

TOP

返回列表