Вы можете перебирать .ses
файлы в каталоге через цикл for и использовать start для запуска исполняемого файла и передачи ему имени .ses
файла. Внутри цикла для каждой итерации вы можете использовать подстановки переменных, чтобы получить имя файла из .ses
файла, исключая расширение.
Вы можете передать имя файла (без расширения) в качестве первого аргумента ( %~1
) для вызова после имени метки подпрограммы. Этот первый аргумент может быть включен в некоторую динамическую логику VBScript, используя sendkeys для ввода желаемого результата .pdf
из диалогового окна « Сохранить файл PDF как» .
Наконец, используйте cscript для выполнения динамически созданного VBScript, чтобы он соответствующим образом выполнял эмулируемые команды нажатия клавиш и управлял диалоговыми окнами, чтобы помочь дальнейшей автоматизации - он все еще пакетный, но с некоторыми встроенными расширенными, управляемыми и настраиваемыми логиками Windows.
Скрипт (пакетный пример)
Примечание: вам может понадобиться поиграть с, timeout /t <#>
чтобы указать больше или меньше секунд ожидания в зависимости от того, сколько времени после ses
чтения файла в exe до того, как откроется окно Сохранить файл PDF как . То же самое относится и sendkeys TAB <#>
к количеству вкладок, которые нужно нажать в этом окне, поскольку я смог провести лишь небольшое тестирование с помощью функции « Сохранить вывод на печать как заголовок» и виртуального принтера PDF.
@ECHO ON SET "WinTitle=Save PDF File As" SET "sesDir=C:\Folder\sesFiles" SET "exe=C:\Folder\abc.exe" FOR %%A IN ("%sesDir%\*.ses") DO ( start "" %exe% -batch "%%~A" timeout /t 10 CALL :dynVBS "%%~NA" ) EXIT :dynVBS SET TempVBSFile=%temp%\~tmp_SavePDFFileAs_Temp.vbs IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%" ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >"%TempVBSFile%" ECHO Wscript.Sleep 900 >>"%TempVBSFile%" ECHO WshShell.AppActivate "%WinTitle%" >>"%TempVBSFile%" ECHO Wscript.Sleep 900 >>"%TempVBSFile%" ECHO WshShell.SendKeys "^a" >>"%TempVBSFile%" ECHO Wscript.Sleep 500 >>"%TempVBSFile%" ECHO WshShell.SendKeys "" >>"%TempVBSFile%" ECHO Wscript.Sleep 500 >>"%TempVBSFile%" ECHO WshShell.SendKeys "%~1.pdf" >>"%TempVBSFile%" ECHO Wscript.Sleep 500 >>"%TempVBSFile%" ECHO WshShell.SendKeys "" >>"%TempVBSFile%" ECHO Wscript.Sleep 500 >>"%TempVBSFile%" ECHO WshShell.SendKeys "" >>"%TempVBSFile%" CSCRIPT //nologo "%TempVBSFile%" GOTO :EOF