噢,伙计!
这是一个VBScript,它应该更改目录中名为
的所有文件1229_002510至2010-12-29_002510
最终发生的事情是脚本永远不会终止。
在一次通过文件名之后,它将KEPT GOING并在2010年 - 多个时间之前预先设定,直到我杀死了该脚本。
只有在cmd 下通过CScript启动脚本时才会出现该错误。
(使用:cscript“filename.vbs”启动)
所以现在我有一些像这样的文件
2010-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-11-26_023335
意识到我是一个VBScript noob。
脚本似乎在测试模式下工作(只是打印文件名),但只要您对实际文件有效,它就会表现出所描述的行为。
' shell script that changes dates like
' 1219_005530 to 2010-12-19_005530
' create a root filesystemobject:
Dim ofso
Set ofso = CreateObject( "Scripting.FileSystemObject" )
' create a folder object USING that root filesystem object
Dim folder
' that's the current directory
Set folder = ofso.GetFolder( "." )
' now, visit each file in the folder
Dim fileo
For Each fileo In folder.Files
dim originalName
originalName = CStr( fileo.Name )
' cut first 2 chars, prepend 2010-, re-add first 2 chars + "-"
dim monthNumber
monthNumber = Mid( originalName, 1, 2 )
' don't change the source file!
If Right( originalName, 3 ) = "vbs" Then
WSH.echo( "Not changing " & originalName )
Else
dim newName
newName = "2010-" & monthNumber & "-" & Mid( originalName, 3 )
WSH.echo( originalName )
WSH.echo( newName & " < CHANGED TO" )
' ONLY ENABLE THIS LINE ONCE DEBUGGING COMPLETE
'fileo.Name = newName
End If
Next
' PAUSE BEFORE EXIT
答案 0 :(得分:0)
我不知道你的dit,但我复制/粘贴你的脚本,它的工作方式与你的预期一致。 (Windows 7)
编辑:尝试设置脚本可以循环的时间的最大值。这将解决它。可能是脚本将重命名的文件视为新文件,从而创建了无限循环。
答案 1 :(得分:0)
您可以分两步执行此任务。首先扫描目录中的文件并将其名称收集到数组中,然后运行此数组并重命名文件。这应该更可靠。
并考虑切换到JScript。与之相比,VBS只是丑陋。