程序猿们,求程序或脚本实现批量文件重命名功能

2014-11-19 10:25:06 +08:00
 mortal
大概要实现的是:

1、将一个目录下的所有内容(包括子文件夹的)导出为 *.txt,比如里面有「a.doc b.xls ……」;
2、手动修改 *.txt 内容,保存为新的 txt 文本「1.doc 2.xls ……」;
3、程序将两个文本比对,将所有文件更改为新的文件名。

系统环境 Windows,我能想到的就是用 tree 命令,然后用 Python 解析格式、循环完成更名操作。
我知道如果在类 Unix 系统下 shell 脚本估计就可以很容易搞定了,但是没有这个条件……

有没有现成的类似的工具,或者有哪位大神帮撸一发代码呢?
2158 次点击
所在节点    问与答
13 条回复
rrfeng
2014-11-19 11:00:01 +08:00
cygwin

虽然还是没懂你要干什么。

先把文件名列出来,然后肉眼判断每个改成什么名字,然后再用程序改过去?
mimzy
2014-11-19 11:06:45 +08:00
不知道 ReNamer 是不是符合你的需求
xavierskip
2014-11-19 11:11:02 +08:00
Total Commander
aa65535
2014-11-19 11:16:12 +08:00
为什么不用 for /r ?

(for /r .\ %%i in (*) do echo ren %%i %%~nxi)>ren.bat

然后你修改 ren.bat 就行了,里面是生成好的 ren 命令。
如果改路径需要改成 move ,不用 ren 。
mortal
2014-11-19 11:27:28 +08:00
@rrfeng 是这个意思
mortal
2014-11-19 11:28:54 +08:00
@xavierskip TC 试过了,只能批量修改一个目录下的文件,不能同时包括子文件夹……
mortal
2014-11-19 11:36:01 +08:00
@mimzy 感谢,这个软件差不多可以满足要求,就是对中文支持不好
yakczh
2014-11-19 11:44:17 +08:00
os.walk 你值得拥有
frankzeng
2014-11-19 12:46:39 +08:00
第一个先成生,再运行另一个
##q.py
import os
path = "C:\Users\john\Desktop\data\sbaidu" #dir
dlist = os.walk(path)

outdict = {}
for d in dlist:
sdir = d[0]
for i in d[1:]:
for file in i:
p = sdir+"\\"+file
outdict[p] = 1

fd = open("qout.txt",'w') #write to file qout.txt
for key in outdict.keys():
fd.write(key+'\n')
fd.close()

这是另一个文件

import os

qfile = "qout.txt" #old file
mfile = "mout.txt" #the new file

data = {}
fd = open(qfile)
n = 1
for line in fd:
data[n] = line[:-1]
n += 1
fd.close()

fd = open(mfile)
n = 1
for line in fd:
file = line[:-1]
if file!=data[n]:
print data[n] ,"move to ",file
os.rename(data[n],file)
else:
pass
n += 1
asdftu
2014-11-19 14:07:27 +08:00
批处理实现起来会很简单。

for /r 遍历所有文件,
echo 文件名
set /p 键入新文件名
ren

搞定
msg7086
2014-11-19 14:12:06 +08:00
拖把更名器,拖入所有文件,调用文本文件命名,应用,结束。
mortal
2014-11-19 20:44:12 +08:00
@yakczh 我也是这么想的~
@frankzeng 非常感谢!我写出来可能要几个小时=。= 大神一下搞定了…
frankzeng
2014-11-20 09:17:45 +08:00
@mortal 不客气,需要的话可以加我企鹅106367224

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/147650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX