如何批量修改照片文件名? 5

我们有一堆照片,使用序号命名,我们现在想要将它的命名改序号加姓名,,请问有没有简便的方法。能不能最好不要一个一个的改,求简便方法。... 我们有一堆照片,使用序号命名,我们现在想要将它的命名改序号加姓名,,请问有没有简便的方法。能不能最好不要一个一个的改,求简便方法。 展开
 我来答
yes___no
2020-12-09 · TA获得超过3153个赞
知道大有可为答主
回答量:1988
采纳率:100%
帮助的人:2029万
展开全部
===========================
假设你的文件都在c:\picture\目录里,名字是张三.jpg, 李四.jpg等等

Excel里面A B两列分别是:

张三,110108190001010011
李四,122036200901010022
...

===========================
按以下步骤操作:

1. 在C1单元格里加入以下公式
="rename ""c:\picture\"&A1&".jpg"" "&B1&".jpg"
2. 点C1右下角的加号把公式向下拖动到整个C列
3. 那么C列的内容就变成了:
rename "c:\picture\张三.jpg" 110108190001010011.jpg
...
4. 把C列的内容复制出来,打开记事本粘贴进去,然后保存为r.bat, 点击r.bat运行即可。

注意:
1. 提前备份,以防操作失误
2. 注意根据实际情况修改公式里的目录c:\picture
3. 最好把姓名和身份证号放在A/B两列,这样就不用修改公式里的其他部分。
依梦琴瑶
高粉答主

2020-12-08 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
文件名只有序号,那么脚本要想重命名为序号加姓名,那么就必须得让脚本或软件知道每个序号对应的姓名是什么,这样才能写出批量重命名的脚本或软件。
您习惯用excel的话,那么就像您表格中那样生成相应命令,然后把这个命令保存为bat脚本,并放至文件那执行即可。
更多追问追答
追问
bat脚本内容怎么写,我不懂命令,网上查的都用不了,还有的改后是乱码
追答
您excel右侧不是已经有生成的命令吗?直接拷贝它们,然后粘贴到一个新文本中,文本保存时的编码务必选择为ANSI,这样就不会乱码了。然后文本后缀名改为bat即可。把这个bat放到图片文件一起即可
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qop_dob
2020-12-09 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3926万
展开全部
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
cls
@echo off
rem 将当前目录里的多个jpg文件按照原有排序分别在名称末尾添加不同字符串内容
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$ext=@('.jpg');
$namelist=@"
刘一
陈二
张三
李四
王五
赵六
孙七
周八
吴九
郑十
"@;
$codes=@'
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public static class ExpDir
{
[DllImport("Shlwapi.dll", CharSet=CharSet.Unicode)]
public static extern int StrCmpLogicalW(string p1, string p2);
public static string[] Sort(string[] f)
{
Array.Sort(f, StrCmpLogicalW);
return f;
}
}
'@;
Add-Type -TypeDefinition $codes;
$arr=$namelist.trim() -split '[\r\n]+';
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$files=@(dir -liter $path|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
if($files.length -ge 1){
$brr=[ExpDir]::Sort($files);
for($i=0;$i -lt $brr.length;$i++){
$f=get-item -liter $brr[$i];
if($i -lt $arr.length){
$newname=$f.BaseName+$arr[$i]+$f.Extension;
$brr[$i]+$c+$newname;};};}
追问

不行啊

追答
文件太少了,这是一一对应关系,姓名数量跟文件数量要一致
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式