Jackxugz 发表于 2024-11-11 18:17

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

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

【处理前】
E:\整理测试\23645521237924514718寸 胡桃 冯格格.jpg
E:\整理测试\23637909726482472607寸 原木 铁蛋.jpg
E:\整理测试\23645019756195570856寸 复古 留白 黄晓颜.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
https://imgur.com/a/lpELopShttps://imgur.com/CdJ75YS
-----------------------------
参考资料:
一、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 Commanderhttps://www.ghisler.com/

小小涩郎 发表于 2024-11-11 18:17

我写只能用excel 带的vba 来写   wbs写太麻烦了

lyh7733 发表于 2024-11-11 23:03

@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

Jackxugz 发表于 2024-11-12 09:30

lyh7733 发表于 2024-11-11 23:03
@echo off
setlocal enabledelayedexpansion



Q1:原图片文件名中,第20-21字符是【2个】空格。生成新文件夹时,19位编号和姓名之间怎么只保留【1个】空格呢?【当前的指令,新文件夹是2个和3个空格(含有“留白”字样时)】

Q2:如果同个路径内,同时还存在文件名带有“立体”二字,怎么当实现以下?
【处理前】
E:\整理测试\23645019756195570856寸 复古 立体 张三.jpg,
E:\整理测试\23645019756195570856寸 复古 留白 黄晓颜.jpg
【处理后】
E:\整理测试\2364501975619557085 张三.jpg\6寸 复古 立体 张三.jpg
E:\整理测试\2364501975619557085 黄晓颜\6寸 复古 黄晓颜.jpg

Jackxugz 发表于 2024-11-12 14:45

各位大牛 帮忙看看

lyh7733 发表于 2024-11-12 16:00

Jackxugz 发表于 2024-11-12 09:30
Q1:原图片文件名中,第20-21字符是【2个】空格。生成新文件夹时,19位编号和姓名之间怎么只保留【1个】 ...

需要改成两个空格,
    REM 构建新的文件名(保留尺寸、颜色和姓名)
    set "new_file_name=!size! !color! !style! !name!.jpg"
    echo Renaming to: !new_file_name!
其他问题就扔GPT里问吧。因为我也不会了,这就是gpt写的:Dweeqw

Jackxugz 发表于 2024-11-12 16:26

lyh7733 发表于 2024-11-12 16:00
需要改成两个空格,
    REM 构建新的文件名(保留尺寸、颜色和姓名)
    set "new_file_name=!size!...

哥,可能我表达不清晰。我这边图床上传不显示。Q1意思是,①怎么让新生成的文件夹和图片文件名,都保持一个空格?用你最初的代码跑一遍,文件夹前19位编号+姓名之间是2个空格(因为原图片名就是2个空格,需要删减成1个)。②、当图片中含有“留白”2字,您去除后,又多了1个空格,此时文件夹+姓名之间一共出现3个空格。怎么实现文件夹和图片名都是1个空格呢“E:\整理测试\23645019756195570856寸 复古 留白 黄晓颜.jpg”→“E:\整理测试\2364501975619557085 黄晓颜\6寸 复古 黄晓颜.jpg”

Jackxugz 发表于 2024-11-13 17:49

各位大牛 帮忙看下这道题
页: [1]
查看完整版本: 一键批量图片重命名后并分别拉入对应重命名后的文件夹