我想做类似Removing PDF password protection, knowing the password的事情,但是在Windows中。我有一个包含多个PDF的文件夹,这些PDF都具有相同的密码,这一点我知道。我想删除密码并覆盖原始文件(不用担心,我的数据是另一个文件夹的副本)。
我的想法是使用Autohotkey并创建一个脚本来打开文件,粘贴密码,单击Enter,按Ctrl + P,单击Print as PDF,另存为原始文件名,关闭Edge(这就是我的意思。 m用于打开PDF),然后转到文件夹中的下一个文件。
老实说,我对AHK并不熟悉,希望对代码的使用有所帮助。
谢谢!
编辑:这是我尝试过的一些代码,但似乎不起作用。
^+q::
Loop %A_WorkingDir%\*.pdf
sleep 10000
Send, PASSWORD
sleep 2000
Send, {Enter}
Send, ^p
Click 105,694
WinClose, A
Return
答案 0 :(得分:0)
遍历文件时(使用文件循环),实际上并没有打开它们,而是使您可以访问其OS级别的属性,例如路径,名称和系统属性。您可以使用Run
-Run , %A_LoopFileLongPath%
之类的信息来打开每个信息。请注意,如果尚未将Edge设置为默认的PDF查看器,则可能需要。
当前,您的循环仅执行其下方的一行,这是10秒。睡觉。您有2,000个PDF?在继续之前,大约需要5.5个小时的睡眠。 ;)如果要执行多行,请用大括号{ }
括起来,如下所示:
Loop , 1000
{
; stuff
}
从那里开始,我将考虑使用WinWaitActive
以及可能的ControlSend
而不是Sleep
和可能的Send
。这将使您的脚本更加健壮,并且可能花费更少的时间(假设10s是一个上限)。如果可能的话,我也将不鼓励使用单击,因为这些单击有时可能会出现问题(有时您必须多次发送一次单击,否则位置可能会更改)。如果没有这些建议,您肯定可以使它起作用,这可能需要更多的反复试验。
如果需要的话,以某种方式暂停脚本可能也是一个好主意,因为这可能需要一些时间来处理2,000个文件。
帮助文档非常出色,并显示了正确的语法和示例。我建议您针对每个命令进行咨询。
https://www.autohotkey.com/docs/AutoHotkey.htm