2016-02-18 4 views
0

Я пытаюсь создать скрипт, который открывает все файлы 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 
+0

Является ли 'PDFXCview' константой среды, признанной вашей системой? Вы пытались сначала запустить строку, которую хотите оценить из командной строки? – mabe02

+0

Я не верю, что это так. В основном я просто пытаюсь открыть все файлы PDF в этой папке для открытия в этой программе. – Eric

ответ

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 слишком много открытых файлов. В любом случае, чтобы уменьшить длину командной строки, приведенный выше код собирает только имена файлов PDF, а не их полные пути, и гарантирует, что PDFXCview найдет их, изменив CurrentDirectory на свою папку. Если вам это не нравится, измените значение на .Path и вам не понадобится изменение CurrentDirectory.

Существует также изменение на использование StrComp в режиме VBTextCompare для поиска без учета регистра, если любой из файлов имеет имя .PDF или около того. Добавленные двойные кавычки предназначены для обработки любых пробелов в именах файлов. И они удваиваются, так как сами они в двойных кавычках.

+0

Когда я пытаюсь запустить это, он дает мне ошибку, в которой говорится, что путь не найден. Я бросил вместе то, что у меня было, исследуя в Интернете, поэтому, возможно, мне нужно много продолжать. Все, что мне нужно сделать, это открыть все файлы PDF в определенной папке в программе PDFXCview. – Eric

+0

Одним из простых способов избежать перетаскивания пальцев является Shift-Right-Click значок папки/файла и выберите «Копировать как путь», а затем вставьте его в код. – WinTakeAll

+0

Путь существует, насколько я могу видеть. Ошибка, которая возникает, является хостом Windows Script и указывает, что ошибка указана в строке: 4 Char: 1 Ошибка: путь не найден Код: 800A004C – Eric

Смежные вопросы