一键批量图片重命名后并分别拉入对应重命名后的文件夹

查看 17|回复 1
作者:Jackxugz   
场景:本地盘,图片jpg格式,实现一键批量图片重命名后并分别拉入对应的文件夹。
[color=]图片文件名构成:
19位阿拉伯数字+(2个)空格+尺寸+空格+颜色+空格+姓名.jpg,19位阿拉伯数字+(2个)空格+尺寸+空格+颜色+空格+留白+空格+姓名.jpg
[color=]1、生成文件夹,文件夹命名为:前19位编号+空格+姓名,即查找并删除第二个空格到最后一个空格的之间的字符 ,
[color=]如:2364552123792451471 冯格格,2363790972648247260 铁蛋,2364501975619557085 黄晓颜
[color=]2、图片重命名,图片文件名命名为:查找并删除前21位字符,“19位阿拉伯数字+(2个)空格”,
[color=]如:8寸 胡桃 冯格格.jpg,7寸 原木 铁蛋.jpg,6寸 复古 留白 黄晓颜.jpg
[color=]3、第①和第②步进行后,jpg图片拉入生成的文件夹中。
[color=]【特殊说明】同个路径内,图片文件名带"留白"二字和不带会同时存在。第②中的"6寸 复古 留白 黄晓颜.jpg"文件名重命名后也允许是"6寸 复古 黄晓颜.jpg"
求:vbs,bat或cmd命令,能鼠标双击或鼠标+Enter键就能完成的动作。麻烦做好分享下网盘链接,谢谢!

【处理前】
E:\整理测试\2364552123792451471  8寸 胡桃 冯格格.jpg
E:\整理测试\2363790972648247260  7寸 原木 铁蛋.jpg
E:\整理测试\2364501975619557085  6寸 复古 留白 黄晓颜.jpg
【处理后】(方式1)
E:\整理测试\2364552123792451471 冯格格\8寸 胡桃 冯格格.jpg
E:\整理测试\2363790972648247260 铁蛋\7寸 原木 铁蛋.jpg
E:\整理测试\2364501975619557085 黄晓颜\6寸 复古 留白 黄晓颜.jpg
【处理后】(方式2)
E:\整理测试\2364552123792451471 冯格格\8寸 胡桃 冯格格.jpg
E:\整理测试\2363790972648247260 铁蛋\7寸 原木 铁蛋.jpg
E:\整理测试\2364501975619557085 黄晓颜\6寸 复古 黄晓颜.jpg

-----------------------------
参考资料:
一、vbs代码:
dim fso
dim mypath
dim myFile
set fso=createobject("Scripting.FileSystemObject")
mypath=fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path
For Each myFile In fso.getfolder(mypath).Files
         if mypath & "\" & myFile.name  Wscript.ScriptFullName then
            fso.CreateFolder mypath & "\" & fso.GetBaseName(myFile)
            fso.MoveFile myFile,mypath & "\" & fso.GetBaseName(myFile) & "\" & myFile.name
         end if
next
二、将前缀(后缀)字符数相同的文件放入对应同名文件夹(类似的软件还有File To Folder https://github.com/publicdomain/filetofolder)
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d^|findstr /ve bat') do (
   
set "str=%%~na"
   
set "str=!str:~0,12!
   
if not exist "!str!" md "!str!"
   
move "%%a" "!str!"
)
pause
三、批量重命名软件 Total Commander  https://www.ghisler.com/

空格, 重命名

lyh7733   

@echo off
setlocal enabledelayedexpansion
REM 设置当前目录
set "current_dir=%cd%"
REM 遍历当前目录下的所有jpg文件
for %%f in (*.jpg) do (
    echo Processing file: %%f
    REM 使用for /f命令提取文件名中的信息
    set "filename=%%~nf"
    set "number=!filename:~0,19!"
    set "rest=!filename:~19!"
    REM 进一步分割以获取尺寸、颜色和姓名
    for /f "tokens=1* delims= " %%a in ("!rest!") do (
        set "size=%%a"
        set "rest2=%%b"
    )
   
    for /f "tokens=1* delims= " %%a in ("!rest2!") do (
        set "color=%%a"
        set "name=%%b"
    )
   
    REM 去除姓名中的“留白”(如果存在)
    set "name=!name:留白=!"
    REM 创建文件夹(如果不存在)
    set "folder_name=!number!  !name!"
    if not exist "!folder_name!" (
        mkdir "!folder_name!"
        echo Created folder: !folder_name!
    )
    REM 构建新的文件名(保留尺寸、颜色和姓名)
    set "new_file_name=!size! !color! !name!.jpg"
    echo Renaming to: !new_file_name!
    REM 移动文件到对应的文件夹
    move "%%f" "!folder_name!\!new_file_name!"
)
echo All files have been processed.
pause
您需要登录后才可以回帖 登录 | 立即注册