根据数据表批量修改文件名

yjs901 2008-03-27 10:10:27
我有数据表存的一些号码 比如121, 131, 123, 143,
需要按照数据表的号码 更改文件名 更改过后就比如:121_2008-3-2.DLL,131_2008-3-2.DLL,123_2008-3-2.DLL,143_2008-3-2.DLL

代码要怎样写呢?
各位大大倾囊相授啊 。
...全文
201 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yjs901 2008-04-07
............
回复
yjs901 2008-04-07
我还有点点问题
Dim FileNameStr:FileNameStr=LCase("121,131,123,143")'这里121,131,123,143是你读数据库后得到文件名字符串,用,分隔

数据库读出来 咋写成这样哦?
回复
siyee 2008-04-07
[Quote=引用 8 楼 chinmo 的回复:]
循环修改吧
比如说第一个文件对应121,第二个文件对应122
比如
先把所有文件名都写到了一个数组a里了
for i=1 to 记录集数
这里使用FSO修改A(i-1)文件的名字
next
[/Quote]
回复
yjs901 2008-04-07
懂了,谢谢大家了
回复
.........
'================================================================================
'你就读数据库啊.然后连接名称
'这样可以及早释放数据库资源,就不需要一直打开数据库连接了
Dim FileNameStr:set FileNameStr=""
Dim conn:set conn=server.createobject("adodb.connection")
conn.open "数据库驱动"
Dim rs'游标
set rs=conn.execute("select name from 表名")'取游标
do while not rs.eof
FileNameStr=FileNameStr&rs(0)&","'连接名称
rs.movenext
loop
'=======释放数据库资源
rs.close
set rs=nothing
conn.close
set conn=nothing
'================================================================================
'============下面就操作FileNameStr就可以了===========
if FileNameStr!="" then FileNameStr=left(FileNameStr,len(FileNameStr)-1)'去掉最右边的,
Dim fso:Set fso=Server.CreateObject("Scripting.FileSystemObject")
Dim Arr:Arr=Split(FileNameStr,",")
Dim files:Set files=fso.GetFolder(Server.MapPath("dll")).files'======这里改过,改为你放dll的路径,修改文件不要和dll放一起。
Dim fileName,Ext,NewFileName,TempArr
Dim MaxIndex,Index:MaxIndex=UBound(Arr):Index=0
For Each f In files
if Index>MaxIndex then exit for'=======当文件数量大于数据库中的数据数量时退出,防止数组下标越界
TempArr=split(f.name,".")
Ext=TempArr(1)
fileName=TempArr(0)
NewFileName=Arr(Index)&"_"&split(fileName,"_")(1)&"."&Ext
f.name=NewFileName
Index=Index+1
Next
Set files=Nothing
Set fso=Nothing
Response.Write "操作完成"
回复
ymle1228 2008-04-04
UP
回复
ootw 2008-04-04
楼主,我都看懂了。你还没有明白啊?该不会是需要别人帮你全部写出来吧?
你对照着例子就行了啊。
回复
xiaojing7 2008-04-03
[Quote=引用 15 楼 chinmo 的回复:]
我不是告诉你了吗?

看下我 8#和9#
[/Quote]
回复
我不是告诉你了吗?

看下我 8#和9#
回复
 Dim FileNameStr:FileNameStr=LCase("121,131,123,143")'这里121,131,123,143是你读数据库后得到文件名字符串,用,分隔
Dim fso:Set fso=Server.CreateObject("Scripting.FileSystemObject")
Dim Arr:Arr=Split(FileNameStr,",")
Dim files:Set files=fso.GetFolder(Server.MapPath("dll")).files'======这里改过,改为你放dll的路径,修改文件不要和dll放一起。
Dim fileName,Ext,NewFileName,TempArr
Dim MaxIndex,Index:MaxIndex=UBound(Arr):Index=0
For Each f In files
if Index>MaxIndex then exit for'=======当文件数量大于数据库中的数据数量时退出,防止数组下标越界
TempArr=split(f.name,".")
Ext=TempArr(1)
fileName=TempArr(0)
NewFileName=Arr(Index)&"_"&split(fileName,"_")(1)&"."&Ext
f.name=NewFileName
Index=Index+1
Next
Set files=Nothing
Set fso=Nothing
Response.Write "操作完成"
回复
yjs901 2008-04-03
................
回复
ab520ah 2008-04-03
顶楼主你一下。
http://qzshi.com
网站建设技术论坛
另外招版主,或合作管理员,有兴趣的加群4228406
回复
yjs901 2008-03-31
号码跟文件不需要知道哪个对应哪个
只要是一个号码修改一个文件就成
回复
yjs901 2008-03-31
号码是没得规律的

这是数据表比如:
80709031
80709047
80709057
80709062
80709064


已有文件是这样的格式

123_2008-3-4.DLL
143_2008-3-5.DLL
156_2008-3-6.DLL
165_2008-3-2.DLL
178_2008-3-7.DLL


我就需要根据数据表的那些号码 来更改已有的文件


更改后如:

80709031_2008-3-4.DLL
回复
'给个例子给你,照着该吧,主要这个asp文件放到和你dll文件在同一个目录,要不你要修改路径
Dim FileNameStr:FileNameStr=LCase("121,131,123,143")'这里121,131,123,143是你读数据库后得到文件名字符串,用,分隔
Dim NewName:NewName=Year(Now)&"-"&Month(Now)&"-"&Day(Now)
Dim fso:Set fso=Server.CreateObject("Scripting.FileSystemObject")
Dim Arr:Arr=Split(FileNameStr,",")
Dim files:Set files=fso.GetFolder(Server.MapPath(".")).files
Dim fileName,Ext,fileToDel()
Dim Index:Index=0:ReDim fileToDel(Index)
'生成新文件并收集旧文件的路径
For Each f In files
fileName=LCase(f.name)
Ext=Right(fileName,len(fileName)-InStrRev(fileName,".")+1)
fileName=Mid(fileName,1,InStrRev(fileName,".")-1)
For i=0 To UBound(Arr)
If Arr(i)=fileName then'同一个文件
f.copy Server.MapPath(".")&"\"&fileName&"_"&NewName&Ext'生成新文件
ReDim Preserve fileToDel(Index)
fileToDel(Index)=f.path'注意这里不能直接f.delete(True)删除这个文件,要不会旧的文件有可能会删除不完全
Index=Index+1
End If
Next
Next
Set files=Nothing
'删除旧的文件
For Each fn In fileToDel
If fso.FileExists(fn) Then fso.DeleteFile(fn)
Next
Set fso=Nothing
Response.Write "操作完成"
回复
yjs901 2008-03-28
都没人回答我 啊 ?
回复
myvicy 2008-03-28
把你的需求讲讲清楚,否则大家写了代码也不是你想要的,白白浪费大家时间呢。
回复
上面那个必须记录集和文件一样多,不然会出错

也可以这样
把所有的ID号都写到一个数组a里

也是利用循环把每一个文件对应着数组a里的对应的值
比如

for i=0 to 文件数
第一个文件对应着数组的a(i+1)的ID号
next
回复
循环修改吧
比如说第一个文件对应121,第二个文件对应122
比如
先把所有文件名都写到了一个数组a里了
for i=1 to 记录集数
这里使用FSO修改A(i-1)文件的名字
next
回复
数据库和文件的关系???

没关系程序怎么知道哪个对哪个
回复
加载更多回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-03-27 10:10
社区公告
暂无公告