以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]对上传成功的文件进行重命名 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65871) |
-- 作者:liujywwy -- 发布时间:2015/3/24 17:34:00 -- [求助]对上传成功的文件进行重命名 对上传成功的文件进行重命名,发现并没有重命名,请看红色的代码,哪里有问题? Dim fls() As String = dlg.FileNames Dim Values1 As New List(Of String) Dim Values2 As New List(Of String) Dim ftp As new FTPClient ftp.Host = "192.168.1.35" ftp.Account = "tester" ftp.Password = "tester" e.Form.text = "所选文件上传中...." Dim ss As String For Each f1 As String In dlg.FileNames If (ftp.Upload(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1))) = True Then \'判断是否上传成功 If (FileSys.GetName(f1).Contains(".")) Then Dim dian As Integer = FileSys.GetName(f1).LastIndexOf(".") ftp.Rename(FileSys.GetName(f1),FileSys.GetName(f1).SubString(0,dian) & "_" & Tables("临时版本跟踪表").Current("临时版本编号") & FileSys.GetName(f1).SubString(dian,FileSys.GetName(f1).Length - dian)) End If values1.add(f1) \'如果上传成功,那么就把这个文件添加到集合values1里面 Dim xg As Integer = f1.LastIndexOf("\\") \'找出f1文件的最后一个\\ Dim fname As String = f1.SubString(xg + 1) \'取出f1的文件名 ss = ss & vbcrlf & fname \'分行显示f1的文件名 End If Next Functions.Execute("listview") e.Form.text = "版本目录文件list" MessageBox.Show(ss,"恭喜你上传成功" & values1.count & "个文件!,分别为:")
|
-- 作者:有点酸 -- 发布时间:2015/3/24 21:52:00 -- ftp的Rename函数,两个参数都必须包括路径的,所以你的ftp.rename第一个参数就不对,你只是取文件名而已。 你可以在Rename之前,分别用MessageBox.show显示一下原文件和目标文件这两个参数,看看是否有问题。
|
-- 作者:liujywwy -- 发布时间:2015/3/25 10:38:00 -- For Each f1 As String In dlg.FileNames If (ftp.Upload(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1))) = True Then \'判断是否上传成功 msgbox(f1)-----源文件正确 msgbox(Vars("zhygwjj") & "\\" & Filesys.getName(f1)) -----目标文件正确 If (FileSys.GetName(f1).Contains(".")) Then Dim dian As Integer = FileSys.GetName(f1).LastIndexOf(".") ftp.Rename(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1).SubString(0,dian) & "_" & Tables("临时版本跟踪表").Current("临时版本编号") & Vars("zhygwjj") & "\\" & Filesys.getName(f1).SubString(dian,FileSys.GetName(f1).Length - dian))-----没有重命名,哪里不对呢? End If values1.add(f1) \'如果上传成功,那么就把这个文件添加到集合values1里面 Dim xg As Integer = f1.LastIndexOf("\\") \'找出f1文件的最后一个\\ Dim fname As String = f1.SubString(xg + 1) \'取出f1的文件名 ss = ss & vbcrlf & fname \'分行显示f1的文件名 End If Next Functions.Execute("listview") e.Form.text = "版本目录文件list" MessageBox.Show(ss,"恭喜你上传成功" & values1.count & "个文件!,分别为:") 或者有什么更好的办法处理,我是把每上传成功一个文件就然后把它进行了重命名。 |
-- 作者:有点甜 -- 发布时间:2015/3/25 10:43:00 -- 1、重命名是否多余?你upLoad的时候,本来就是能够控制名字的啊;
2、无法重命名,就是你的路径没写对,第一第二个都要是ftp上的路径。 [此贴子已经被作者于2015/3/25 10:43:39编辑过]
|
-- 作者:liujywwy -- 发布时间:2015/3/25 11:17:00 -- 临时版本编号为03024_2015,也就是tables(“临时版本跟踪表”).current("临时版本编号")的值。 比如上传上去的文件有下面6个。扩展名有*.bin,*.map,*.txt,*.doc,如红色的文件名。 BD_2226H_2.1.1A_25279.bin BD_2226H_2.1.1A_25279_vxWorks.map BD_2226H_2.1.1A_25279_vxWorks show version.txt default-config 03024_2015(S2210I_深圳博诚)临时版本测试报告.doc 希望做到有扩展名的也就说文件名包括.的,重命名后格式为.之前加上_临时版本编号。如下 BD_2226H_2.1.1A_25279_03024_2015.bin BD_2226H_2.1.1A_25279_vxWorks_03024_2015.map show version_03024_2015.txt 不带扩展名的分2种: 一种为文件名不包括vxworks的,比如default-config,希望重命名格式为:文件名后面直接加上_临时版本编号。如下 default-config_03024_2015 另外一种为文件名有vxworks,比如BD_2226H_2.1.1A_25279_vxWorks,希望在_vxworks之前加上_临时版本编号。如下: BD_2226H_2.1.1A_25279_03024_2015_vxWorks 想按照有点甜老师的建议,直接在upload后就进行重命名,可是不知道针对上面各种情况改怎么写代码。
|
-- 作者:有点甜 -- 发布时间:2015/3/25 11:38:00 -- 参考下面的代码,自己改一下
Dim bh As String = "_03024_2015" |
-- 作者:liujywwy -- 发布时间:2015/3/25 14:20:00 -- Dim bh As String = Tables("临时版本跟踪表").Current("临时版本编号") Dim dlg As new OpenFileDialog dlg.MultiSelect = True Dim s As String Dim fnames,fname1 As String If dlg.ShowDialog = DialogResult.OK Then s = "你选择了" & dlg.FileNames.Length & "个文件, 分别是:" For Each f As String In dlg.FileNames s = s & vbcrlf & f fnames = fnames & vbcrlf & fname1 Dim f1 As String = FileSys.GetName(f) If f1.EndsWith("_vxWorks") Then Dim idx As Integer = f1.LastIndexOf("_vxWorks") fname1 = f1.SubString(0, idx-1) & "_" & bh & "_vxWorks" Else Dim idx As Integer = f1.LastIndexOf(".") If idx > -1 Then fname1 = f1.SubString(0, idx) & "_" & bh & f1.SubString(idx) Else fname1 = f1 & "_" & bh End If End If Next MessageBox.Show(s,"你选择的文件数量及其路径如下:") msgbox(fnames) End If Dim fls() As String = dlg.FileNames Dim Values1 As New List(Of String) Dim Values2 As New List(Of String) Dim ftp As new FTPClient ftp.Host = "192.168.1.35" ftp.Account = "tester" ftp.Password = "tester" e.Form.text = "所选文件上传中...." Dim ss As String For Each f2 As String In dlg.FileNames If (ftp.Upload(f2,Vars("zhygwjj") & "\\" & fname1))= True Then \'判断是否上传成功-----没上传成功 msgbox(f2) msgbox(Vars("zhygwjj") & "\\" & fname1) values1.add(f2) \'如果上传成功,那么就把这个文件添加到集合values1里面 ss = ss & vbcrlf & fname1 \'分行显示f1的文件名 End If Next Functions.Execute("listview") e.Form.text = "版本目录文件list" MessageBox.Show(ss,"恭喜你上传成功" & values1.count & "个文件!,分别为:") ftp.Close |
-- 作者:有点甜 -- 发布时间:2015/3/25 14:31:00 -- 无语......类似下面这样写代码啊
If dlg.ShowDialog = DialogResult.OK Then |