以下VBScript将txt文件转换为doc文件。
这完美无缺!但它还保留源文件夹“FolderWithTxtFiles”中的源txt文件。我希望在将源txt文件转换为doc后将其删除。
VBScript代码:
strFolder = "D:\FolderWithTxtFiles"
If Right(strFolder, 1) <> "\" Then
strStartFolder = strFolder & "\"
Else
strStartFolder = strFolder
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Const wdFormatDocument = 0
For Each objFile In objFSO.GetFolder(strFolder).Files
If LCase(objFSO.GetExtensionName(objFile.Path)) = "txt" Then
' See: http://msdn.microsoft.com/en-us/library/aa220317(office.11).aspx
objWord.Documents.Open objFile.Path, False, True, False
If Right(strFolder, 1) = "\" Then
strNewName = Left(strFolder, Len(strFolder) - 1)
Else
strNewName = strFolder
End If
strRootFolder = Left(strNewName, InStrRev(strNewName, "\"))
strNewName = Left(strNewName, InStrRev(strNewName, "\")) & "FolderWithConvertedDocFiles"
If objFSO.FolderExists(strNewName) = False Then objFSO.CreateFolder(strNewName)
strNewName = strNewName & "\" & Left(objFile.Name, Len(objFile.Name) - 3) & "doc"
' See: http://msdn.microsoft.com/en-us/library/aa220734(office.11).aspx
objWord.DisplayAlerts = False
objWord.ActiveDocument.SaveAs strNewName, wdFormatDocument, , , False
objWord.DisplayAlerts = True
objWord.ActiveDocument.Close False
End If
Next
For Each objSubFolder In objFSO.GetFolder(strFolder).SubFolders
RecurseSubFolders objSubFolder
Next
objWord.Quit
Sub RecurseSubFolders(objFolder)
For Each objFile In objFolder.Files
If LCase(objFSO.GetExtensionName(objFile.Path)) = "txt" Then
' See: http://msdn.microsoft.com/en-us/library/aa220317(office.11).aspx
objWord.Documents.Open objFile.Path, False, True, False
If Right(objFolder.Path, 1) = "\" Then
strFolderName = Left(objFolder.Path, Len(objFolder.Path) - 1)
Else
strFolderName = objFolder.Path
End If
strNewName = strRootFolder & "FolderWithConvertedDocFiles" & "\" & Replace(LCase(strFolderName), LCase(strStartFolder), "")
If objFSO.FolderExists(strNewName) = False Then objFSO.CreateFolder(strNewName)
strNewName = strNewName & "\" & Left(objFile.Name, Len(objFile.Name) - 3) & "doc"
objWord.DisplayAlerts = False
objWord.ActiveDocument.SaveAs strNewName, wdFormatDocument, , , False
objWord.DisplayAlerts = True
objWord.ActiveDocument.Close False
End If
Next
For Each objSubFolder In objFolder.SubFolders
RecurseSubFolders objSubFolder
Next
End Sub