|
本帖最后由 dos时代菜鸟 于 2024-3-5 19:01 编辑
- @ECHO OFF
- setlocal ENABLEDELAYEDEXPANSION
- if "%~1"=="" goto :end1
- set "dir1=%~1"
- set "file1=%~dp0222.txt"
- PUSHD %1
- echo.>"!file1!"
- for /f "tokens=1,3 delims=," %%c in (ming.csv) do (
- call :ren1 %1 %%c %%d
- )
- goto :end2
- :ren1
- for %%i in (%2*.jpg) do (
- for /f "tokens=3 delims=_." %%l in ("%%i") do (
- set "str1=%%l"
- if not "!str1:~15,3!"=="" (
- echo %%~ni %2_%3
- echo %%i,!str1!,%2_%3.jpg>>"!file1!"
- ren "%%i" "%2_%3.jpg"
- exit /b
- )
- )
- )
- exit /b
- :end1
- echo “参数不对”!
- echo.
- :end2
- pause
复制代码
222-2.7z
(83.5 KB, 下载次数: 8)
原来 原始 ming.csv 中没有 身份证号,那就换个思路。
见附件,把含有 ming.csv 及 *.jpg 的文件夹 拖放到 222-1.cmd 中,就可以得到结果,并生成记录文件 222.txt ,可以解决姓名重名问题。
分析原始 jpg 文件名称 包含信息的特点和 更名后的文件名特点,区别是 身份证号 位数要长一些,第15-18 位有内容。
文件夹 和 ming.csv 中都有姓名重名情况,但是,没有 身份证与工号的一一对应关系。所以,输出一个 更名 对应关系的记录文件 是 必要的。
如此,就算重名,如果 这个 jpg 文件 已经不是原始名字了,就 不予考虑。
遍历 ming.csv ,一行一行的过,在文件夹中找到第一个 没改名的 jpg (改过的不算,找下一个) ,就 改名,然后以此类推,同时把 改名记录存入 222.txt 。
|
评分
-
查看全部评分
|