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

[文件操作] 批处理文件重命名为原文件名末尾最后几位字符

我文件内有一批文件。
如abc02.xls
abc03.xls
abc04.xls
abc05.xls
abc06.xls
abc07.xls
.......
想修改成只保留文件名后两位,产生如下的文件:
02.xls
03.xls
04.xls
05.xls
06.xls
07.xls
......
现在的问题是由于数据生成的原因,有时候会出现原文件名不连续的现象,也就是abc03.xls或abc06.xls文件有可能并不存在,而我只想依据原文件名产生文件名后两位的文件,不知道该如何实现。谢谢各位老师帮我解决一下。

  只是把文件名保留后两位吗?如果文件名不连续是否需要做什么修改?会不会出现重名文件?如果有重名文件出现,又如何处理?
  如果只是保留文件名后两位而不考虑其他情况的话,事情就会很好办了。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

如果文件名只由数字和英文组成,如果只含两个数字:
  1. @echo off
  2. for /f "delims=abcdefghijklmnopqrstuvwxyz." %%a in ('dir/b *.xls') do (
  3.   ren *%%a.xls %%a.xls
  4. )
复制代码

TOP

尘土飞扬老师:
原来文件生成的编码规则:如aaacs1090101.xls,其编码规则是前三位表示单位代码,第四至第六位为报表名称,第七、八位表示年份,第九、十位表示月份,第十一、十二位表示日期。现在我想根据原已经生成的文件名,重新生成只保留第十一、十二位日期的文件,也就是生成01.xls文件.

只要保留文件名后两位的数字,重名文件不会出现.

tieless老师的代码,我试了试,没有成功.主要是我对批处理的理解能力有限,还希望老师能解释一下代码运行的原理.谢谢老师了.

TOP

  试试这个代码:
  思路:获取当前目录下的所有.xls文件,通过字符截取,只保留最后6个字符即可(保留两位文件名+4位后缀名)
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /a-d /b *.xls') do (
  4.     set "name=%%i"
  5.     ren "!name!" "!name:~-6!"
  6. )
  7. pause
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

谢谢老师,代码试验成功了.如果可以的话,老师能对代码解释一下,实现的过程.谢谢!

TOP

回复 6楼 的帖子

哪句不懂,就问哪句,有很多热心人会告诉你答案;如果全部不懂,建议先去教学区学习基础教程,这样才能更快的掌握批处理。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

dir /a-d 这一句有什么作用呀

TOP

回复 8楼 的帖子

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\test>dir /?
显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要列出的驱动器、目录和/或文件。

  /A          显示具有指定属性的文件。
  attributes   D  目录                R  只读文件
               H  隐藏文件            A  准备存档的文件
               S  系统文件            -  表示“否”的前缀

  /B          使用空格式(没有标题信息或摘要)。
  /C          在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
              停用分隔符显示。
  /D          跟宽式相同,但文件是按栏分类列出的。
  /L          用小写。
  /N          新的长列表格式,其中文件名在最右边。
  /O          用分类顺序列出文件。
  sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  颠倒顺序的前缀
  /P          在每个信息屏幕后暂停。
  /Q          显示文件所有者。
  /S          显示指定目录和所有子目录中的文件。
  /T          控制显示或用来分类的时间字符域。
  timefield   C  创建时间
              A  上次访问时间
              W  上次写入的时间
  /W          用宽列表格式。
  /X          显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。
  /4          用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

dir /a-d的意思就是只显示文件,不显示文件夹。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

"  /B          使用空格式(没有标题信息或摘要)。"
"没有标题信息或摘要"是什么意思啊?
http://hi.baidu.com/%BD%BA%CB%AE502

TOP

回复 10楼 的帖子

参阅:http://bbs.bathome.net/viewthrea ... amp;page=1#pid19400

指只列文件名,没有修改时间及所在目录等信息。

TOP

/B          使用空格式(没有标题信息或摘要)。括号里的是什么意思啊?最好举例...
http://hi.baidu.com/%BD%BA%CB%AE502

TOP

这个问题你直接使用 dir /b  和 dir 不带  /b 参数试试不就知道了。
技术问题请到论坛发帖求助!

TOP

非常好的代码!学习了!知道怎么取变量中的最后6个字符了!!name:~-6!
太强了!

TOP

回复 5# namejm
大神真牛*,顶礼膜拜

TOP

返回列表