我写了一个简单的vbscript来重命名特定文件夹中的文件。特别是从filname中删除特定内容。
我编写的脚本(下面列出)运行正常,但突出显示的部分(第二个IF-THEN语句)没有运行。我无法弄清楚代码是什么问题。我计划添加更多IF-THEN语句以从文件名中删除特定内容。
我是新手,所以请耐心等待我。有人可以帮忙吗?
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder="C:\Users\Admin2\Downloads\Compressed"
Set objFolder = objFS.GetFolder(strFolder)
For Each strFile In objFolder.Files
strFileName = strFile.Name
If InStr(strFileName,"(2014)") > 0 Then
strNewFileName = Replace(strFileName,"(2014)","")
strFile.Name = strNewFileName
End If
**If InStr(strFileName,"(digital)") > 0 Then
strNewFileName = Replace(strFileName,"(digital)","")
strFile.Name = strNewFileName
End If**
Next
答案 0 :(得分:2)
检测到类型前缀欺诈:
For Each strFile In objFolder.Files
“strFile”应该是“objFile”。危险的额外变量:
strFileName = strFile.Name
如果更改“objFile.Name”,变量“strFileName”将变为陈旧。使用变量来保存新的/所需的名称。
strNewFileName = objFile.Name
重命名文件两次将在途中松动。修改“strNewFileName”(分步骤或全部:
strNewFileName = Replace(Replace(strNewFileName, "(2014)", ""), "(digital)", "")
你真的不需要If guard,因为Replace不会改变不包含目标的字符串。)
在重命名之前检查.FileExists(strNewFileName)。
你能证明文件名中包含“(digita1)”< - 标记数字1)吗?低于大写?一个讨厌的空白?
答案 1 :(得分:0)
我希望以下代码有帮助
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder="pathtofolder"
Set objFolder = objFS.GetFolder(strFolder)
For Each objFile In objFolder.Files
ObjFileName = ObjFile.Name
NewFileName = Replace(Replace(ObjFileName,"(2014)",""),"(digital)","")
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
If fileSystemObject.FileExists(NewFileName) Then
Else
ObjFile.Name = Trim(NewFileName)
End If
Next