Передача параметра в параметр - PullRequest
0 голосов
/ 15 ноября 2018

Справка !!

Итак, у меня есть пакетный файл, который просматривает имя файла и затем печатает в sumatrapdf.exe имя принтера на основе исходного имени файла.Имя принтера сохраняется в параметре.Когда я повторяю параметр имени принтера, это правильно.Когда я передаю параметр имени принтера в программу печати, он выдает ошибку, полагая, что он не видит параметр имени принтера.(думая, что мне как-то нужно передать другой набор «%», чтобы пакетный файл знал свой параметр.

FOR %%F IN (%C:\Users\nick\Desktop\Test1%\Shelf*.csv) DO (
 set filename=%%~nF
 Set filename1=%%F
 goto tests
)
:tests
echo "%filename1%"
echo "%filename%"

Set "Shelf-01Printer=NPIBBF846 (HP Color LaserJet CP2025dn)"
Set "Shelf-07Printer=NPIBBF846 (HP Color LaserJet CP2025dn)"
Set "Shelf-97Printer=NPIBBF846 (HP Color LaserJet CP2025dn)"
Set "Hook-09Printer=HP LaserJet P2050 Series PCL6"
Set "PrinterName=%filename%Printer"
Echo %PrinterName%

Start SumatraPDF.exe -print-to %PrinterName% "C:\Users\nick\Desktop\Test1\% filename%".pdf
Timeout /t 15

1 Ответ

0 голосов
/ 15 ноября 2018

В вашей переменной расширения есть пробел: % filename%. Уберите пробел. Но это не исправит вашу логику. По сути, вы пытаетесь сделать двойное расширение переменной. Вы можете сделать это, используя аккуратный трюк с командой CALL.

CALL Set "PrinterName=%%%filename%Printer%%"

Использование команды CALL дает вам две фазы расширения переменной. Когда команда CALL выполняется, строка кода становится такой:

CALL Set "PrinterName=%Shelf-01Printer%"

Затем команда SET выполняется и устанавливает для переменной соответствующее имя принтера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...