一键批量图片重命名后并分别拉入对应重命名后的文件夹
场景:本地盘,图片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/ 我写只能用excel 带的vba 来写 wbs写太麻烦了
@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 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 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 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” 各位大牛 帮忙看下这道题
页:
[1]