Board logo

标题: [文件操作] [已解决]按已有的名称序号给文件名编序 [打印本页]

作者: 小文    时间: 2015-2-22 19:47     标题: [已解决]按已有的名称序号给文件名编序

本帖最后由 小文 于 2015-3-4 17:40 编辑

有这样的文档(注,任意后的数字与前面的数字无关,仅代表不同的文字):
1、任意1
2、任意2
3、任意3
4、任意4
5、任意5
6、任意6
7、任意7
8、任意8
9、任意9
10、任意10
11、任意11
12、任意12
13、任意13
14、任意14
15、任意15
16、任意16
17、任意17
18、任意18
19、任意19

这样的文件(顺序不定):
任意1
任意16
任意2
任意15
任意3
任意4
任意6
任意7
任意8
任意17
任意9
任意10
任意11
任意12
任意5
任意13
任意14
任意18
任意19

问题:
怎样把文件命名以文档命名,把序号给文件名加上(如果可以,并补齐数位)?

如:
001任意1
016任意16
002任意2
015任意15



下面是一堆文件:

日记本.txt
妇产科联盟.txt
变形钢筋.txt
丘比特人.txt
偷奶神爸.txt
中国队长.txt


下面是一堆文字:

1、妇产科联盟.txt
2、偷奶神爸.txt
3、丘比特人.txt
4、变形钢筋.txt
5、中国队长.txt
21、日记本.txt



通过文字给文件命名为:

001、妇产科联盟.txt
002、偷奶神爸.txt
003、丘比特人.txt
004、变形钢筋.txt
005、中国队长.txt
021、日记本.txt


实用场景:

  有一批教程有N多文件,教程的目录列出了教程由浅而深的文件排列信息。但是在真实的文件目录里,这些N多文件是没有顺序的。这样的话不看目录就不知道要先看哪个文件了。所以要根据目录信息给文件编出顺序。
作者: pcl_test    时间: 2015-2-22 20:22

本帖最后由 pcl_test 于 2015-2-23 00:24 编辑

回复 1# 小文
举例不当,说明不清,表示没弄懂,只能猜测你想要的效果
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\test\"
  4. for /f "delims=" %%a in ('dir /a-d /b *.*') do (
  5. set "name=%%~na"
  6. >$ echo,!name:~-2,-1!
  7. findstr "[1-9]" $ >nul 2>nul &&ren "%%~a" "0!name:~-2!%%~a"||ren "%%~a" "00!name:~-1!%%~a"
  8. )
  9. del $
  10. pause
复制代码

作者: CrLf    时间: 2015-2-23 00:26

楼主说的“任意”是不是一个文件名中一段非数字的部分
按我的理解,会不会是这样:
  1. 妇产科联盟1
  2. 变形钢筋4
  3. 丘比特人3
  4. 偷奶神爸2
  5. 中国队长3
复制代码
变成
  1. 001妇产科联盟1
  2. 004变形钢筋4
  3. 003丘比特人3
  4. 002偷奶神爸2
  5. 003中国队长3
复制代码

作者: 小文    时间: 2015-2-23 12:34

回复 2# pcl_test


    非常抱歉我没有叙述清楚,你的代码不可用。谢谢你的解答。我重新举例和说明了,你看看这下能不能理解……
作者: 小文    时间: 2015-2-23 12:36

回复 3# CrLf


    嗯嗯,是这样的,但后面的数字只是表示“任意”是一个同的名称。另外,我已经重新描述问题,谢谢。
作者: pcl_test    时间: 2015-2-23 14:12

本帖最后由 pcl_test 于 2015-2-23 14:23 编辑

回复 4# 小文
实际自行修改
  1. @echo off
  2. cd /d "D:\test\"
  3. for /f "tokens=1-2 delims=、" %%a in ('type "name.txt"') do (
  4. if %%a lss 10 (
  5. ren "%%b" "00%%a、%%b"
  6. ) else (
  7. ren "%%b" "0%%a、%%b"
  8. )
  9. )
  10. pause
复制代码

作者: 小文    时间: 2015-2-23 22:15

回复 6# pcl_test


    那它怎样修改才可以也处理子目录中的呢?如果那些文件不是在同一个目录下的情况。
作者: pcl_test    时间: 2015-2-23 22:25

回复 7# 小文

最通用的方法就是结合搜索文件代码(虽然效率有点慢),也就是读取name.txt,然后在文件夹搜索(N级子文件夹也不成问题)出文件后再更名




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2