[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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 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. )
复制代码

TOP

本帖最后由 hotgl001 于 2015-11-27 08:43 编辑

回复 2# dizimotong


    谢谢,你的方法解决了日期时间,但最主要的是根据姓名,在前缀加上姓名的首字母。而且文件名中会有别的汉字。另外文件名中有空格,这个批处理就不能用了。

TOP

回复 3# hotgl001


    那么你说下,区分/提取姓名的依据是什么?

TOP

回复 4# pcl_test


    可以把我需要的姓名都放文件里,类似字典吧好象。再把文件名里的内容和字典对比,如果有对应的姓名,就在前面加首字母。可能是这样的思路吧,我也不懂。嘿嘿
先谢啦

TOP

@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,运行起来有点慢,而且原文件名中带空格的话命令就无效了。不知是否有更好的方法。谢谢

TOP

回复 2# dizimotong

再请问如何加秒  谢谢

TOP

回复 7# hotgl001

二楼代码已改,能够处理文件名有空格的情况,但是关于加上姓名首字母和时间的秒数上,暂时没有思路

TOP

把你的字典做出来,格式像这样
张三 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. )
复制代码

TOP

回复 9# flyinnet9

谢谢,你的方法和我的差不多,还是需要循环所有的人名。
不知是否可以直接先提取第一个eml文件名,然后用文件名对比字典,如果有符合的再改名。这样会不会更快些。

TOP

回复 10# hotgl001


    张三喜洋洋和灰太狼.txt

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

  归根结底,计算机并不知道什么是人名

TOP

回复 11# flyinnet9

刚才说了可以建个字典,把姓名加进去

TOP

从汉字串中识别出姓名 是 人工智能 语言理解的范畴了.
简单的代码只能做到 字典匹配

TOP

回复 13# aa77dd@163.com


就楼主的例子而言,可以这样:
  1. for /f "delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ." %%a in (a.txt) do echo %%a
复制代码

TOP

返回列表