无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4621|回复: 33
打印 上一主题 下一主题

[求助] 批处理改名

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-26 20:51:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
文件夹内都是jpg图片文件,
名称规律是:姓名+下划线+数字+空格+名称+下划线+身份证号.jpg
例如:(蓝色部分是固定的)
张三_23 幼_130455199002020322.jpg
李四_23 幼_130455199002020611.jpg
王五_23 幼_130455199002020724.jpg
......
======================
现在有一个txt文档,比如名字是 ming.txt
内容规律如下:姓名,性别,工号,身份证号....(用英文逗号分隔开,每行一个)
例如:
张三,男,20220003,130455199002020322
李四,男,20220004,130455199002020611
王五,男,20220005,130455199002020724

......
=========================
现在想根据 ming.txt把文件夹内的jpg图标都改名
改成  姓名_工号.jpg

怎么使用for 还有findstr完成,想着这2个命令可以

2#
发表于 2024-2-26 21:49:03 | 只看该作者
1.打开MiniRenamer选择文件夹,勾选文本模式,把文件名复制到excel
2.把ming.txt内容复制到excel
3.把上面两列数据对应上
4.把排序后的新文件名复制到MiniRenamer,执行改名。

点评

赞一个!  详情 回复 发表于 2024-2-27 07:21
这个软件第一次用,文本模式算是这个特色,但是你说的excel文档中的步骤没有太明白 另外,它的文本模式不支持按alt,按列模式选择删除或者输入内容,如果可以会更方便些  详情 回复 发表于 2024-2-26 22:37

评分

参与人数 2无忧币 +8 收起 理由
yyz2191958 + 3 赞一个!
freesoft00 + 5

查看全部评分

回复

使用道具 举报

3#
发表于 2024-2-26 22:09:43 | 只看该作者
  1. @echo off
  2. pushd %~dp0
  3. for /f "tokens=1-4 delims=," %%a in ('type ming.txt') do for /f "delims=" %%A in ('dir /a /b "%%a_*_%%d.jpg" 2^>nul') do ren "%%A" %%a_%%c.jpg
  4. pause
复制代码


其实有很多批量命名软件的,ming必须ansi编码

点评

很给力!  详情 回复 发表于 2024-2-27 07:22
改名软件,我测试了advanced_renamer,也许是不太会用,没有弄成  详情 回复 发表于 2024-2-26 22:42
可以了 有一个另外的问题不知道是否能解决。 ming.txt(也就是下面的附件中的ming.csv)其中的姓名是有重名的,这样批量改的话,遇到重名的是否可以递增一个数字序列比如 张三_222222_1 张三_222222_2  详情 回复 发表于 2024-2-26 22:35

评分

参与人数 2无忧币 +8 收起 理由
yyz2191958 + 3 很给力!
freesoft00 + 5

查看全部评分

回复

使用道具 举报

4#
 楼主| 发表于 2024-2-26 22:24:37 | 只看该作者
测试.zip (248.45 KB, 下载次数: 11)
上传了一个测试文档,按照ming.csv来改名,一楼写的是ming.txt,测试文档实际是ming.csv,这个不影响的,知道意思就行了
回复

使用道具 举报

5#
 楼主| 发表于 2024-2-26 22:35:23 | 只看该作者
nttwqz 发表于 2024-2-26 22:09
其实有很多批量命名软件的,ming必须ansi编码

可以了


有一个另外的问题不知道是否能解决。

ming.txt(也就是下面的附件中的ming.csv)其中的姓名是有重名的,这样批量改的话,遇到重名的是否可以递增一个数字序列比如 张三_222222_1    张三_222222_2

不好弄就不考虑这个问题。

主要是ming.txt改名文档中,其中没有身份证列,如果有这个话,过滤就不会有重复的啦。

点评

没这必要,工号又不会重。  详情 回复 发表于 2024-2-27 00:17
不用批处理用vba可以吗??用vba应该可以给重名的增个序号,如果行明天我试试  详情 回复 发表于 2024-2-26 23:55
回复

使用道具 举报

6#
 楼主| 发表于 2024-2-26 22:37:15 | 只看该作者
gy0715 发表于 2024-2-26 21:49
1.打开MiniRenamer选择文件夹,勾选文本模式,把文件名复制到excel
2.把ming.txt内容复制到excel
3.把上 ...

这个软件第一次用,文本模式算是这个特色,但是你说的excel文档中的步骤没有太明白

另外,它的文本模式不支持按alt,按列模式选择删除或者输入内容,如果可以会更方便些
回复

使用道具 举报

7#
 楼主| 发表于 2024-2-26 22:42:28 | 只看该作者
nttwqz 发表于 2024-2-26 22:09
其实有很多批量命名软件的,ming必须ansi编码

改名软件,我测试了advanced_renamer,也许是不太会用,没有弄成
回复

使用道具 举报

8#
发表于 2024-2-26 23:55:28 | 只看该作者
本帖最后由 likeyouli 于 2024-2-27 00:04 编辑

不用批处理用vba可以吗??用vba应该可以给重名的增个序号,如果行明天我试试,还有姓名_工号不会同时有重复的吧,如果有就必须得增个序号了

点评

工号不会重复,只有名字会  详情 回复 发表于 2024-2-27 09:10
回复

使用道具 举报

9#
发表于 2024-2-27 00:17:02 | 只看该作者

没这必要,工号又不会重。

点评

for /f "skip=1 tokens=1-4 delims=," %%a in ('type ming.csv') do for /f "delims=" %%A in ('dir /a /b "%%a_*.jpg" 2^>nul') do echo ren "%%A" %%a_%%c.jpg 我昨天实际的代码,dir没有跟身份证,只限定了姓  详情 回复 发表于 2024-2-27 09:12
回复

使用道具 举报

10#
发表于 2024-2-27 07:18:52 | 只看该作者
赞,谢谢分享。
回复

使用道具 举报

11#
发表于 2024-2-27 07:21:03 | 只看该作者
gy0715 发表于 2024-2-26 21:49
1.打开MiniRenamer选择文件夹,勾选文本模式,把文件名复制到excel
2.把ming.txt内容复制到excel
3.把上 ...

赞一个!
回复

使用道具 举报

12#
发表于 2024-2-27 07:22:24 | 只看该作者
nttwqz 发表于 2024-2-26 22:09
其实有很多批量命名软件的,ming必须ansi编码

很给力!
回复

使用道具 举报

13#
发表于 2024-2-27 07:47:47 | 只看该作者
感谢各位大佬,我也需要
回复

使用道具 举报

14#
发表于 2024-2-27 08:35:15 | 只看该作者
进来学习下
回复

使用道具 举报

15#
发表于 2024-2-27 08:48:41 | 只看该作者
感謝你的分享
回复

使用道具 举报

16#
发表于 2024-2-27 09:08:49 | 只看该作者
学习学习
回复

使用道具 举报

17#
 楼主| 发表于 2024-2-27 09:10:24 | 只看该作者
本帖最后由 freesoft00 于 2024-2-27 09:16 编辑
likeyouli 发表于 2024-2-26 23:55
不用批处理用vba可以吗??用vba应该可以给重名的增个序号,如果行明天我试试,还有姓名_工号不会同时有 ...

工号不会重复,只有名字会,用什么工具或者代码都可以,只要完成任务什么都可以

点评

Sub wuyouchuti() Dim t As Workbook, str, dan As Range Set t = Workbooks.Open("D:\ming.csv") '这里根据实际更改,要求ming.csv和图片必须在同一目录。 '以下代码对ming.csv拆列,要求表格的a列为姓名,性别  详情 回复 发表于 2024-2-27 11:38
回复

使用道具 举报

18#
 楼主| 发表于 2024-2-27 09:12:59 | 只看该作者
nttwqz 发表于 2024-2-27 00:17
没这必要,工号又不会重。

for /f "skip=1 tokens=1-4 delims=," %%a in ('type ming.csv') do for /f "delims=" %%A in ('dir /a /b "%%a_*.jpg" 2^>nul') do echo ren "%%A" %%a_%%c.jpg

我昨天实际的代码,dir没有跟身份证,只限定了姓名,所以会有重复。
按你的这个ming.csv文件如果有提供身份证信息,那么是不会有重复的
回复

使用道具 举报

19#
发表于 2024-2-27 10:02:11 | 只看该作者
按身份证关联即可,不需要findstr
回复

使用道具 举报

20#
发表于 2024-2-27 10:09:49 | 只看该作者
来看看解决方案
回复

使用道具 举报

21#
发表于 2024-2-27 10:52:38 | 只看该作者
谢谢分享!收藏了
回复

使用道具 举报

22#
发表于 2024-2-27 11:34:19 | 只看该作者
感谢分享好东东
回复

使用道具 举报

23#
发表于 2024-2-27 11:38:09 | 只看该作者
本帖最后由 likeyouli 于 2024-2-27 14:36 编辑
freesoft00 发表于 2024-2-27 09:10
工号不会重复,只有名字会,用什么工具或者代码都可以,只要完成任务什么都可以

Sub wuyouchuti()
Dim t As Workbook, str, dan As Range
Set t = Workbooks.Open("D:\ming.csv") '这里根据实际更改,要求ming.csv和图片必须在同一目录。
'以下代码对ming.csv拆列,要求表格的a列为姓名,性别,工号,身份证号
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=",", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 2)), _
        TrailingMinusNumbers:=True
'以下代码增加一列姓名排序,F列可实现没有重复名字的为张三_222222,有重复名字的为张三_222222_1,_2等。
   Range("E1").FormulaR1C1 = "=IF(COUNTIF(C[-4],RC[-4])>1,COUNTIF(R1C1:RC[-4],RC[-4]),"""")"
    Range("E1").AutoFill Destination:=Range("e1", "e" & Cells(Rows.Count, 1).End(xlUp).Row)
   Range("F1").FormulaR1C1 = "=IF(RC[-1]="""",RC[-5]&""_""&RC[-3],RC[-5]&""_""&RC[-3]&""_""&RC[-1])"
   Range("F1").AutoFill Destination:=Range("F1", "F" & Cells(Rows.Count, 1).End(xlUp).Row)
str = t.Path
tu = Dir(str & "\")
Do
If tu <> "ming.csv" Then
    s3 = Mid(tu, Application.Find("_", tu, Application.Find("_", tu) + 1) + 1, 18)
    Set dan = ActiveSheet.UsedRange.Find(s3)
    s1 = str & "\" & tu
    s2 = str & "\" & dan.Offset(0, 2) & ".jpg"
    Name s1 As s2
End If
tu = Dir
Loop Until tu = ""
End Sub

可实现没有重复名字的为张三_222222,有重复名字的为张三_222222_1,_2,  也就是没有重复名字的不后缀序号,有重复名字的才会后缀序号。刚测试了,没问题。


评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

24#
发表于 2024-2-27 16:31:48 | 只看该作者
进来学习
回复

使用道具 举报

25#
发表于 2024-2-27 19:27:09 | 只看该作者
楼主:很早以前我从好压软件里面提取制作的批“量改名”单文件版工具,能够满足你的使用需求。把下面的中文文字删除之后就可以登陆网盘下载了
https:删//pan.baidu.除com/s/删1m9Z1z-kNhdClYOBo2NVEzg?pwd除=2yg5

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

26#
发表于 2024-2-27 19:53:30 | 只看该作者

赞,谢谢分享。
回复

使用道具 举报

27#
发表于 2024-2-28 05:45:43 | 只看该作者
学习学习
回复

使用道具 举报

28#
发表于 2024-2-28 08:10:40 | 只看该作者
学习学习
回复

使用道具 举报

29#
发表于 2024-3-4 19:00:40 来自手机 | 只看该作者
advancerename
回复

使用道具 举报

30#
发表于 2024-3-4 20:28:10 | 只看该作者
本帖最后由 dos时代菜鸟 于 2024-3-4 20:29 编辑

222.7z (552 Bytes, 下载次数: 1)

把 名为 1 的文件夹 拖放到 批处理 222.cmd 上,就可以实现效果。注意 ming.txt 和 222.cmd 在 同一个位置。







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 13:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表