以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]批量修改文件名  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=34350)

--  作者:8350
--  发布时间:2013/6/6 9:50:00
--  [求助]批量修改文件名
现在有一个总文件夹,文件夹下有很多的子文件夹,这些文件夹的名称都是已数字命名的,如:542526483311JA00001, 542526483311JA00002,

现在是这样,这些数字文件夹下面有一个.doc文件,原来是清单.doc,现在我想写一个按钮,达到直接选中总文件夹后,批量完成将该文件夹下的清单.doc文件改名为542526483311JA00001清单.doc,等等,就是取数字编号文件名称+清单来完成一一对应关系,可否?


例如:     图片文件夹分级
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2013/6/6 9:56:00
--  
http://www.foxtable.com/help/topics/0331.htm  参考这里可以满足你需求

先利用GetDirectories 获得所有文件夹名

再利用 MoveFile  重命名

最后 DeleteFile 删除原来的文件

--  作者:8350
--  发布时间:2013/6/6 11:14:00
--  
能帮写一下代码么,我参考学习,因为刚刚接触弧表,还有点搞不清楚,谢谢


--  作者:8350
--  发布时间:2013/6/6 12:04:00
--  
按钮公式:

For Each dr As DataRow In DataTables("表A").DataRows
     Dim fl2 As String = "C:\\B\\" & dr("宗地号") & "\\ 清单.doc"     
     FileSys.RenameFile(fl2,"C:\\B\\"  & dr("宗地号") & "\\" & dr("宗地号") &  "清单.doc")
   Next

结果:
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

--  作者:8350
--  发布时间:2013/6/6 12:04:00
--  
不知错误在哪里?》请指教
--  作者:狐狸爸爸
--  发布时间:2013/6/6 12:07:00
--  

1、“清单”前面多了一个空格:

 

Dim fl2 As String = "C:\\B\\" & dr("宗地号") & "\\ 清单.doc"     


--  作者:8350
--  发布时间:2013/6/6 12:24:00
--  
哈哈,收到,谢谢老总


--  作者:8350
--  发布时间:2013/6/6 12:34:00
--  
还是不行,按你的改了

For Each dr As DataRow In DataTables("表A").DataRows
     Dim fl2 As String = "C:\\B\\" & dr("宗地号") & "\\清单.doc"     
     FileSys.RenameFile(fl2,"C:\\B\\" & dr("宗地号") & "\\" & dr("宗地号") & "清单.doc")
   Next

执行结果:
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


还有就是想设计一个全局变量A,A代表的是改名前的DOC文件的名称,因为手工做的很多不统一,有的是XX清单,有的是xxx清单,想给一个手工输入的地方来完成改名,不知怎么修改代码。
谢谢

--  作者:狐狸爸爸
--  发布时间:2013/6/6 14:24:00
--  

你要重命名的话,第二个参数不能包括路径,因为重命名只是更改源文件的名称,并不改变文件的路径。
也许你应该用这个:

http://www.foxtable.com/help/topics/0342.htm

 

For Each dr As DataRow In DataTables("表A").DataRows
     Dim fl2 As String = "C:\\B\\" & dr("宗地号") & "\\清单.doc"    
     FileSys.CopyFile(fl2,"C:\\B\\" & dr("宗地号") & "\\" & dr("宗地号") & "清单.doc",True)
     FileSys.DeleteDirectory("C:\\B\\" & dr("宗地号"))
Next

 

也就是先复制文件到一个新的位置和新的名称,然后删除原来的目录,具体可以自己调整,看看全部的文件与目录相关函数:

http://www.foxtable.com/help/topics/0331.htm

 


--  作者:狐狸爸爸
--  发布时间:2013/6/6 14:26:00
--  

至于第二个文件:

 

For Each dr As DataRow In DataTables("表A").DataRows
      Dim dr2 As String = "C:\\B\\" & dr("宗地号") 

      For Each fl2 As string in Filesys.GetFiles(dr2)
            FileSys.CopyFile(fl2,"C:\\B\\" & dr("宗地号") & "\\" & dr("宗地号") & "清单.doc",True)

      Next
     FileSys.DeleteDirectory("C:\\B\\" & dr("宗地号"))
Next