如何从批处理文件同步打开PDF文件

4
我希望您能够从批处理文件中打开一个PDF文件,并且只有在用户关闭PDF文件后,批处理文件才会继续运行。
这样做:
start "" /WAIT "test.pdf" 

等待应用程序关闭,而不是文件。因此,如果其他文件处于打开状态,则无法按预期工作。
它是如何工作的?

你尝试过 start "Reading PDF" /wait "Path/to/acroread.exe" "test.pdf" 吗? - Eugen Rieck
我没有测试那个,因为我不想在读取应用程序中使用显式路径(因为Acrobat总是将版本号放在路径中)。但我也不知道这会有什么区别。我会尝试一下。 - peter
我的经验是,你的版本会等待文件被释放,而另一个版本会等待应用程序结束。 - Eugen Rieck
实际上这个方法是可行的,但只适用于阅读器。使用完全相同的代码行,Acrobat Pro告诉我“找不到文件”。很奇怪,因为我的默认打开程序是Acrobat Pro。 我的最新想法是寻找一个类似于taskkill的程序,只不过是taskwait或其他什么东西,它可以查找Windows标题并等待它们关闭。 - peter
只是一个想法:你可以使用 ASSOC .pdf 查找分配给 .pdf 文件类型的标识符,然后使用 FTYPE identifier 获取可执行文件的名称,然后您就能够使用 START /WAIT 打开文件。 - Andriy M
@peter,你是不是想让批处理文件在PDF阅读器关闭之前停止执行下一行代码?我不太确定你想要什么。 - Eitan T
2个回答

4
实际上,你应该编写
start "" /WAIT "test.pdf"

如果你想使用/wait开关(否则它会被传递给Adobe,我认为它不会接受这样的命令),当然,这行代码将等待Adobe应用程序完成(而不是文件关闭)- 如果要检测文件关闭,你需要一些窗口标题处理解决方案,比如AutoIt:

ShellExecute("test.pdf")
WinWait("test.pdf")
WinWaitClose("test.pdf")

对于Acrobat Pro找不到文件的问题 - 你是否提供了完整的文件路径?最好这么做,因为另一个应用程序当前所在的目录并不总是很明显。
所以你必须这样做:
start "" /WAIT /D"C:\WhateverFolderShouldBeCurrent" "test.pdf"

是的,我在我的真实文件中需要等待那个位置,当我输入问题时没有足够的注意力。我发现如果没有其他PDF文件打开,它可以工作,但如果有其他PDF文件打开,则会失败。所以你关于应用程序的想法是正确的。过去,taskkill无法仅关闭一个Adobe窗口,但现在它可以了,Adobe已经改进了。我希望这里也是一样的。 - peter
+1 是为了指出如果要使“start”正确处理参数,则“title”不是可选项。 - Mark Berry

2

在您的批处理文件中使用以下行:

test.pdf

请确保将.pdf扩展名链接到acroread.exe。有关更多详细信息:START /?


我也见过这种行为:只需指定文件名即可加载关联应用程序并暂停批处理文件。不过,我没有测试在同一应用程序中打开多个文件,这可能是 OP 所问的。 - Mark Berry
此外,他说有些电脑没有阅读器,它们有专业版。 - PsychoData

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接