Vbscript VB脚本更改或删除特殊字符

Vbscript VB脚本更改或删除特殊字符,vbscript,Vbscript,我有一个通过google找到的小VB脚本(见下文),它在XML文件中找到一个this字符串(H*699557/1A),并将文件名重命名为该字符串,它工作得非常出色,直到遇到一个特殊字符(如字符串示例中所示),然后停止 请有人帮我删除特殊字符,任何帮助,谢谢 Set objFS = CreateObject("Scripting.FileSystemObject") strFolder = "C:\vbs" Set objFolder = objFS.GetFolder(strFolder) S

我有一个通过google找到的小VB脚本(见下文),它在XML文件中找到一个this字符串(H*699557/1A),并将文件名重命名为该字符串,它工作得非常出色,直到遇到一个特殊字符(如字符串示例中所示),然后停止

请有人帮我删除特殊字符,任何帮助,谢谢

Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "C:\vbs"
Set objFolder = objFS.GetFolder(strFolder)

Set regEx = New RegExp  
regEx.Pattern = ".*<SuppliersInvoiceNumber>(.*?)</SuppliersInvoiceNumber>.*"
regEx.IgnoreCase = True 
regEx.MultiLine = True

For Each strFile In objFolder.Files
    strFileName = strFile.Name 
    If InStr(strFileName ,"USI") > 0 Then
        Set objFile=objFS.OpenTextFile(strFileName)
        strData = objFile.ReadAll 
        Set objFile=Nothing
        Set colMatches = regEx.Execute(strData)
        For Each objMatch In colMatches
           strNew = Split(objMatch.Submatches(0),"\")
           strNewFile = strNew(0)
           strFile.Name = strNewFile & ".xml"
        Next
    End If
Next
Set objFS=CreateObject(“Scripting.FileSystemObject”)
strFolder=“C:\vbs”
设置objFolder=objFS.GetFolder(strFolder)
Set regEx=New RegExp
regEx.Pattern=“*(*?).*”
regEx.IgnoreCase=True
regEx.MultiLine=True
对于objFolder.Files中的每个strFile
strFileName=strFile.Name
如果InStr(strFileName,“USI”)>0,则
设置objFile=objFS.OpenTextFile(strFileName)
strData=objFile.ReadAll
设置objFile=Nothing
Set colMatches=regEx.Execute(strData)
对于colMatches中的每个objMatch
strNew=Split(对象匹配子匹配(0),“\”)
strNewFile=strNew(0)
strFile.Name=strNewFile&“.xml”
下一个
如果结束
下一个
Set objFS=CreateObject(“Scripting.FileSystemObject”)
strFolder=“C:\vbs”
设置objFolder=objFS.GetFolder(strFolder)
Set regEx=New RegExp
regEx.Pattern=“*(*?).*”
regEx.IgnoreCase=True
regEx.MultiLine=True
对于objFolder.Files中的每个strFile
strFileName=strFile.Name
如果InStr(strFileName,“USI”)>0,则
设置objFile=objFS.OpenTextFile(strFileName)
strData=objFile.ReadAll
设置objFile=Nothing
Set colMatches=regEx.Execute(strData)
对于colMatches中的每个objMatch
strNew=Split(对象匹配子匹配(0),“\”)
strNewFile=strNew(0)
strFile.Name=Replace(Replace(strNewFile,“*”,“),“/”,“)&.xml)
下一个
如果结束
下一个

我不明白这个问题。你能举一个它什么时候停止的例子吗?哪些特殊字符导致它失败?您能发布错误消息吗?嗨,Nathan,我正在使用的字符串将文件名更改为其中的“*/”字符,我需要在重命名文件之前删除这些字符。错误是:第18行,字符6,错误:无效的过程调用或参数,代码:800A0005,源代码:Microsoft VBScript运行时错误。这与上面代码中的行号相对应?在以下strFile.Name=strNewFile&“.xml”上,我发布了一个解决方案。如果您觉得有帮助,请接受并投票:作品完美,谢谢你的帮助。抱歉,内森,这个网站的新手,我现在已经接受了答案,但由于是新来的,所以无法更新投票。但是非常感谢你的帮助。谢谢当我的声誉超过15岁时,我会回来投票。让我们来了解为什么这个问题的解决方案必须处理更多的非法字符,并且应该处理由于删除不同的坏字符而导致的重复文件名。
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "C:\vbs"
Set objFolder = objFS.GetFolder(strFolder)

Set regEx = New RegExp  
regEx.Pattern = ".*<SuppliersInvoiceNumber>(.*?)</SuppliersInvoiceNumber>.*"
regEx.IgnoreCase = True 
regEx.MultiLine = True

For Each strFile In objFolder.Files
    strFileName = strFile.Name 
    If InStr(strFileName ,"USI") > 0 Then
        Set objFile=objFS.OpenTextFile(strFileName)
        strData = objFile.ReadAll 
        Set objFile=Nothing
        Set colMatches = regEx.Execute(strData)
        For Each objMatch In colMatches
           strNew = Split(objMatch.Submatches(0),"\")
           strNewFile = strNew(0)
           strFile.Name = Replace(Replace(strNewFile,"*",""),"/","")  & ".xml"
        Next
    End If
Next