使用外部程序打开多个PDF文件

时间:2016-02-18 21:41:54

标签: file pdf vbscript

我正在尝试创建一个脚本,用于打开某个文件夹中的所有PDF文件,同时打开某个程序中的所有PDF文件。以下是我目前所拥有的,并不适合我。

Dim objFSO
Dim MyFile
Dim MyFolder
Dim objShell

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set MyFolder = objFSO.GetFolder("C:\Users\Test\Desktop\New folder")
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe")

For Each MyFile In MyFolder.Files
    If Right(MyFile.Path,4) = ".pdf" Then
        objShell.Exec("PDFXCview" + MyFile.Path)
    End If
Next

1 个答案:

答案 0 :(得分:0)

一种简单的方法是在PDFXCview.exe的命令行中发送所有文件名:

Dim objFSO, MyFile, MyFolder, objShell, strPDFFiles

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set MyFolder = objFSO.GetFolder("C:\Users\Test\Desktop\New Folder")
Set objShell = WScript.CreateObject("WScript.Shell")

strPDFFiles = ""
For Each MyFile In MyFolder.Files
    If StrComp(Right(MyFile.Name, 4), ".pdf", VBTextCompare) = 0 Then
        strPDFFiles = strPDFFiles & " """ & MyFile.Name & """"
    End If
Next

objShell.CurrentDirectory = MyFolder
Set objExec = objShell.Exec("""C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe""" & strPDFFiles)

命令行当然可能会溢出大量文件。在此之前,有太多打开文件的可能性是PDFXCview chokes。无论哪种方式,为了减少命令行的长度,上面的代码只收集PDF文件'名称而不是它们的完整路径,并确保PDFXCview通过将CurrentDirectory更改为其文件夹来查找它们。如果您不喜欢这样,请更改回.Path,并且不需要更改CurrentDirectory。

如果任何文件名称为.PDF左右,那么在VBTextCompare模式下使用StrComp进行不区分大小写的扩展查找也会发生变化。添加的双引号用于处理文件名中的任何空格。由于它们本身在双引号范围内,因此它们会翻倍。