| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 600 人关注过本帖
标题:求助大虾,这里有一段获取当前时间的代码,改一下就行!谢谢
只看楼主 加入收藏
cattac
Rank: 1
来 自:北京海淀
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-4-2
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
求助大虾,这里有一段获取当前时间的代码,改一下就行!谢谢
CurrentTime=Hour(Now)&":"&Minute(Now)&":"&Second(Now)
'此命令获取当前时间
strFolder = "d:\SWbackup_1049\log\"  


Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFolder = objFSO.GetFolder(strFolder)  
Set colFiles = objFolder.Files  

For Each strFile in colFiles  
    If Lcase(objFSO.GetExtensionName(strFile)) = "txt" Then
    arrtime=split(now,":")
    strNewName=join(arrtime,"_") & strFile.Name
       objFSO.MoveFile strFile, strFolder & "\" & strNewName
    End If  
Next  

Set objFSO = Nothing
'文件更名脚本,参数time时间,now日期
------------------------------------------------------------------
上边就是获取当前时间,给txt文本重命名的代码!格式是这样:“文本1.txt”变成“2013-2-27 下午 07_08_46_文本1.txt”

求助大虾,现在是执行一次重命名一次,想要的效果是。。。改过的文件名 再执行它将不会改动(否则会有N多个时间,文件名会乱)
2013-07-29 14:20
Crazyzhu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-7-5
收藏
得分:0 
这个论坛怎么这么冷清,我发个帖子都没人会,呜呜~
2013-07-29 21:05
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:0 
回复 2楼 Crazyzhu
稍安勿躁好不好,没有人一天24个小时都呆在论坛,等着帮你解决问题。

本人QQ:775420425
2013-07-29 21:13
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
2013-2-27 下午 07_08_46_文本1.txt

你修改过了文件格式是 日期 + 空格 + 时间 + 原文件名

那么,你取到文件名时,以空格为分隔,取第一段,应该就是一个日期。
你把这个字串,也就是 2013-2-27 判断一下是不是 一个日期 ,如果是,那么说明这个文件有日期在前面,就不改了。
如果不包含空格,或者第一个空格前面的内容不是日期,那就 改名吧。

授人于鱼,不如授人于渔
早已停用QQ了
2013-07-29 21:27
cattac
Rank: 1
来 自:北京海淀
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-4-2
收藏
得分:0 
回复 4楼 风吹过b
嗯啊,就是这个意思,请问该怎么改一下呢??谢谢
2013-08-01 09:30
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:5 
strFile.Name
你取的文件名是这个。

dim s as string
dim s2 as string
dim b as boolen
s=strfile.name
b=true
if instr(1,s," ")>0 then        '包含空格
   s2=left(s,instr(1,s," "))
   if isdate(s2) then      '包含日期,设置为不处理
      b=false
   end if
end if

if b then   '接原来的加日期处理
        arrtime=split(now,":")
    strNewName=join(arrtime,"_") & strFile.Name
       objFSO.MoveFile strFile, strFolder & "\" & strNewName
end if

浏览器写的代码,自己测试

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-01 11:12
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:15 
刚好有点时间,顺便把你那问题解答一下。整个代码如下:
程序代码:
'文件移动小例子
'小松鼠QQ:775420425

Const strFolder As String = "d:\SWbackup_1049\log\"

Private Sub Command1_Click()
  Dim objFSO As Scripting.FileSystemObject
  Dim objFolder As Scripting.Folder
  Dim colFiles As Scripting.Files
  Dim colFile As Scripting.File
  Dim strFile As String, strNewName As String, arrtime() As String
  Dim bz As Boolean
  Dim objReg As RegExp
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolder = objFSO.GetFolder(strFolder)
  Set colFiles = objFolder.Files
  Set objReg = New RegExp
  For Each colFile In colFiles
    If LCase(objFSO.GetExtensionName(colFile.Name)) = "txt" Then
      bz = False
      objReg.Pattern = "\d{4}-\d{1,2}-\d\s\d{1,2}_\d{1,2}_\d{1,2}_\w+"  '文件名格式
      arrtime = Split(Now, ":")
      strFile = Join(arrtime, "_") & "_"
      strNewName = strFolder & strFile & colFile.Name  '组合成新文件名
      bz = objReg.Test(colFile.Path)
      If bz = False Then    '如果文件没有改名,则执行移动
        objFSO.MoveFile colFile.Path, strNewName
        strFile = ""
        strNewName = ""
      End If
    End If
  Next
  Set objReg = Nothing
  Set colFile = Nothing
  Set colFiles = Nothing
  Set objFolder = Nothing
  Set objFSO = Nothing
End Sub
由于在执行移动之前,要先判断是否是已经改好名称的文件,是则不执行移动,否则则移动文件。但是由于你修改后的文件名格式比较复杂,是诸如“日期 时间 原文件名.txt”这样的格式。所以为了更好地判断这样的文件格式,我在代码中使用了正则表达式来处理,以确保不产生误判。
但是请注意,我在代码中提供的正则表达式不支持中文文件名。即如果你原来的文件是中文文件名,则已修改了文件名的文件,代码仍然会把它看成是没有修改文件名,依旧会对它改名。
我代码中的正则表达式匹配的文件名格式是象"2013-8-1 21_32_45abc.txt"这样的,其中的"abc"即是原来的文件名,可以是任意多个不是中文的英文文件名。具体情况只要你运行一下我的代码,就一目了然。
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册




[ 本帖最后由 hjxlj 于 2013-8-1 21:47 编辑 ]

本人QQ:775420425
2013-08-01 21:39
cattac
Rank: 1
来 自:北京海淀
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-4-2
收藏
得分:0 
回复 7楼 hjxlj
大虾。。。您这个代码有报错。。。
2013-08-05 11:28
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:0 
回复 8楼 cattac
我知道了,因为我的代码使用了正则表达式。所以要正常运行我的代码,你必须先引用正则表达式库。方法是在VB主菜单中单击"工程"菜单,然后再单击"引用(N)..."子菜单,接下来在弹出的"引用"对话框"中,选中正则表达式的引用库即可,如下图所示:
图片附件: 游客没有浏览图片的权限,请 登录注册

图中蓝底白字的这一项就是正则表达式的引用库,确保其前面小方框内有个小勾,即表示引用了这个库。点"确定"按钮关闭这个对话框后,再运行代码即可正常工作。

[ 本帖最后由 hjxlj 于 2013-8-6 00:02 编辑 ]

本人QQ:775420425
2013-08-05 23:48
cattac
Rank: 1
来 自:北京海淀
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-4-2
收藏
得分:0 
回复 9楼 hjxlj
嗯啊,可以了,谢谢大虾
2013-08-06 09:42
快速回复:求助大虾,这里有一段获取当前时间的代码,改一下就行!谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019491 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved