Вы можете перебирать файлы .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 "{DEL}" >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys "%~1.pdf" >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{TAB 3}" >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{ENTER}" >>"%TempVBSFile%"
CSCRIPT //nologo "%TempVBSFile%"
GOTO :EOF
Дополнительные ресурсы
за
- Переменные замены (FOR /?)
Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:
%~I - expands %I removing any surrounding quotes (")
%~nI - expands %I to a file name only
Начните
- Тайм-аут
- вызов
- SendKeys
- AppActivate
- Cscript