找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34760|回复: 13

[文本处理] [已解决]批处理如何在文件名前面加上姓名首字母及年月日星期时分秒?

[复制链接]
发表于 2015-11-26 15:14:31 | 显示全部楼层 |阅读模式
本帖最后由 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

谢谢
发表于 2015-11-27 00:25:27 | 显示全部楼层
本帖最后由 dizimotong 于 2015-11-27 10:35 编辑

回复 1# hotgl001
  1. @echo off


  2. for /f "tokens=1-4 delims=/-周 " %%i in ('date /t') do set Date=%%i年%%j月%%k号 星期%%l
  3. for /f "tokens=1,2 delims=:" %%i in ('time /t') do set Time=%%i时%%j分


  4. for /f "tokens=*" %%i in ('dir /b *eml') do (
  5.         ren "%%i" "%Date% %Time% %%i"
  6. )
复制代码
 楼主| 发表于 2015-11-27 08:41:55 | 显示全部楼层
本帖最后由 hotgl001 于 2015-11-27 08:43 编辑

回复 2# dizimotong


    谢谢,你的方法解决了日期时间,但最主要的是根据姓名,在前缀加上姓名的首字母。而且文件名中会有别的汉字。另外文件名中有空格,这个批处理就不能用了。
发表于 2015-11-27 09:32:15 | 显示全部楼层
回复 3# hotgl001


    那么你说下,区分/提取姓名的依据是什么?
 楼主| 发表于 2015-11-27 09:58:39 | 显示全部楼层
回复 4# pcl_test


    可以把我需要的姓名都放文件里,类似字典吧好象。再把文件名里的内容和字典对比,如果有对应的姓名,就在前面加首字母。可能是这样的思路吧,我也不懂。嘿嘿
先谢啦
 楼主| 发表于 2015-11-27 10:02:31 | 显示全部楼层
@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,运行起来有点慢,而且原文件名中带空格的话命令就无效了。不知是否有更好的方法。谢谢
 楼主| 发表于 2015-11-27 10:09:50 | 显示全部楼层
回复 2# dizimotong

再请问如何加秒  谢谢
发表于 2015-11-27 10:20:49 | 显示全部楼层
回复 7# hotgl001

二楼代码已改,能够处理文件名有空格的情况,但是关于加上姓名首字母和时间的秒数上,暂时没有思路
发表于 2015-11-27 10:48:28 | 显示全部楼层
把你的字典做出来,格式像这样
张三 zs
李四 ls
  1. @echo off
  2. set d=%date:~0,4%年%date:~5,2%月%date:~8,2%日_星期%date:~12,2%_
  3. set t=%time:~0,2%点%time:~3,2%分%time:~6,2%秒_
  4. for /f "tokens=1,2 delims= " %%a in (字典.txt) do (
  5.   for /f %%i in ('dir /b *%%a*.eml') do ren "%%i" "%%b %d% %t% %%i"
  6. )
复制代码
 楼主| 发表于 2015-11-27 11:13:10 | 显示全部楼层
回复 9# flyinnet9

谢谢,你的方法和我的差不多,还是需要循环所有的人名。
不知是否可以直接先提取第一个eml文件名,然后用文件名对比字典,如果有符合的再改名。这样会不会更快些。
发表于 2015-11-27 11:25:09 | 显示全部楼层
回复 10# hotgl001


    张三喜洋洋和灰太狼.txt

   要提取张三?喜洋洋?灰太狼?还是喜洋洋和灰太狼?或者张三喜洋洋?。。。。

  归根结底,计算机并不知道什么是人名
 楼主| 发表于 2015-11-27 12:29:32 | 显示全部楼层
回复 11# flyinnet9

刚才说了可以建个字典,把姓名加进去
发表于 2015-11-27 12:48:52 | 显示全部楼层
从汉字串中识别出姓名 是 人工智能 语言理解的范畴了.
简单的代码只能做到 字典匹配
发表于 2015-11-27 15:45:01 | 显示全部楼层
回复 13# aa77dd@163.com


就楼主的例子而言,可以这样:
  1. for /f "delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ." %%a in (a.txt) do echo %%a
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 09:18 , Processed in 0.020753 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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