Как правильно использовать переменные замены в Windows CMD? - PullRequest
1 голос
/ 03 июня 2019

Я использую Ghost Script для работы с PDF.Я использую числовые переменные в качестве аргументов.Мое имя входного файла "x.pdf".Я хочу, чтобы выходной файл был "x-processing.pdf".Конечно, у меня есть вышеуказанный ментрионный код:

gswin64c.exe -q -dNOPAUSE -dBATCH -dSAFER -dPDFA=2 -dPDFACompatibilityPolicy=1 -dSimulateOverprint=true -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=150 -sOutputFile=%1%-processed.pdf -c .setpdfwrite -f %1

Так что имя выходного файла в настоящее время inputfilename.pdf-processed.pdf.Я хочу удалить это расширение.Но я не могу понять, как.

Я пытался использовать здесь форму замены переменных: http://cplusplus.bordoon.com/cmd_exe_variables.html То есть я изменил -sOutputFile=%1-processed.pdf на -sOutputFile=%~pn1-processed.pdf

Это не сработало.

Итак, я попытался сначала посмотреть, как использовать эти замены.Я попытался скопировать выбранное имя файла в буфер обмена, добавив эту команду через regedit: cmd.exe echo "%~n1"|clip Это не работает.Но если я просто скажу: cmd.exe /c echo "%1"|clip Это работает правильно и скопируйте путь к файлу с расширением в буфер обмена.

Я действительно застрял, так как не понимаю, что я делаю здесь неправильно.Пожалуйста, помогите мне.

Нет сообщений об ошибках.Нет сообщений вообще.Ничего не происходит.

1 Ответ

0 голосов
/ 04 июня 2019

На самом деле, при извлечении команды оболочки из контекстного меню доступно всего несколько переменных.
Больше информации в https://superuser.com/a/473602.

Таким образом, единственный способ - создать командный файл с вышеупомянутымкод:

C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -q -dNOPAUSE -dBATCH -dSAFER -dPDFA=2 -dPDFACompatibilityPolicy=1 -dSimulateOverprint=true -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=150 -sOutputFile="%~dpn1-processed.pdf" -c .setpdfwrite -f "%~1"

И добавьте следующую строку REG_SZ вместо следующей команды:

"Path_to_bat_file/file_name.bat" "%1"

И она должна работать.

...