标题: [文本处理] [已解决]批处理如何在文件名前面加上姓名首字母及年月日星期时分秒? [打印本页]
作者: hotgl001 时间: 2015-11-26 15:14 标题: [已解决]批处理如何在文件名前面加上姓名首字母及年月日星期时分秒?
本帖最后由 hotgl001 于 2015-11-27 14:33 编辑
如何在文件名前面加上姓名首字母及前当的 年月日星期时分秒
如有以下文件:
1235534张三2345.eml
ru39李四9683d.eml
姓名前后的内容不固定
想改成以下格式:
zs 2015年11月26号 星期4 15点4分52秒 1235534张三2345.eml
ls 2015年11月26号 星期4 15点5分7秒 ru39李四9683d.eml
谢谢
作者: dizimotong 时间: 2015-11-27 00:25
本帖最后由 dizimotong 于 2015-11-27 10:35 编辑
回复 1# hotgl001 - @echo off
-
-
- for /f "tokens=1-4 delims=/-周 " %%i in ('date /t') do set Date=%%i年%%j月%%k号 星期%%l
- for /f "tokens=1,2 delims=:" %%i in ('time /t') do set Time=%%i时%%j分
-
-
- for /f "tokens=*" %%i in ('dir /b *eml') do (
- ren "%%i" "%Date% %Time% %%i"
- )
复制代码
作者: hotgl001 时间: 2015-11-27 08:41
本帖最后由 hotgl001 于 2015-11-27 08:43 编辑
回复 2# dizimotong
谢谢,你的方法解决了日期时间,但最主要的是根据姓名,在前缀加上姓名的首字母。而且文件名中会有别的汉字。另外文件名中有空格,这个批处理就不能用了。
作者: pcl_test 时间: 2015-11-27 09:32
回复 3# hotgl001
那么你说下,区分/提取姓名的依据是什么?
作者: hotgl001 时间: 2015-11-27 09:58
回复 4# pcl_test
可以把我需要的姓名都放文件里,类似字典吧好象。再把文件名里的内容和字典对比,如果有对应的姓名,就在前面加首字母。可能是这样的思路吧,我也不懂。嘿嘿
先谢啦
作者: hotgl001 时间: 2015-11-27 10:02
@echo on
set d=%date:~0,4%年%date:~5,2%月%date:~8,2%日_星期%date:~12,2%_
set t=%time:~0,2%点%time:~3,2%分%time:~6,2%秒_
for /f %%i in ('dir /b *张三*.eml') do ( ren "%%i" "ZS %Date% %Time% %%i"
for /f %%i in ('dir /b *李四*.eml') do ( ren "%%i" "LS %Date% %Time% %%i"
)
这是我目前做的,但人名有4、500,运行起来有点慢,而且原文件名中带空格的话命令就无效了。不知是否有更好的方法。谢谢
作者: hotgl001 时间: 2015-11-27 10:09
回复 2# dizimotong
再请问如何加秒 谢谢
作者: dizimotong 时间: 2015-11-27 10:20
回复 7# hotgl001
二楼代码已改,能够处理文件名有空格的情况,但是关于加上姓名首字母和时间的秒数上,暂时没有思路
作者: flyinnet9 时间: 2015-11-27 10:48
把你的字典做出来,格式像这样
张三 zs
李四 ls- @echo off
- set d=%date:~0,4%年%date:~5,2%月%date:~8,2%日_星期%date:~12,2%_
- set t=%time:~0,2%点%time:~3,2%分%time:~6,2%秒_
- for /f "tokens=1,2 delims= " %%a in (字典.txt) do (
- for /f %%i in ('dir /b *%%a*.eml') do ren "%%i" "%%b %d% %t% %%i"
- )
复制代码
作者: hotgl001 时间: 2015-11-27 11:13
回复 9# flyinnet9
谢谢,你的方法和我的差不多,还是需要循环所有的人名。
不知是否可以直接先提取第一个eml文件名,然后用文件名对比字典,如果有符合的再改名。这样会不会更快些。
作者: flyinnet9 时间: 2015-11-27 11:25
回复 10# hotgl001
张三喜洋洋和灰太狼.txt
要提取张三?喜洋洋?灰太狼?还是喜洋洋和灰太狼?或者张三喜洋洋?。。。。
归根结底,计算机并不知道什么是人名
作者: hotgl001 时间: 2015-11-27 12:29
回复 11# flyinnet9
刚才说了可以建个字典,把姓名加进去
作者: aa77dd@163.com 时间: 2015-11-27 12:48
从汉字串中识别出姓名 是 人工智能 语言理解的范畴了.
简单的代码只能做到 字典匹配
作者: CrLf 时间: 2015-11-27 15:45
回复 13# aa77dd@163.com
就楼主的例子而言,可以这样:- for /f "delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ." %%a in (a.txt) do echo %%a
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |