Как заставить escape-символы вести себя через xp_cmdshell сервера sql с помощью команды Caret - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь распечатать из хранимой процедуры SQL Server на принтер этикеток, используя ZPL с переменными и сетевой принтер

Я проверил ZPL, чтобы убедиться, что он работает, а затем научился передаватьэто с помощью сценария PowerShell, чтобы заставить его печатать на правильный сетевой принтер, и он работает, но я спотыкаюсь, пытаясь заставить команду работать в xp_cmdshell сервера SQL.

DECLARE @Pickloc varchar(6) 
DECLARE @powershell varchar(2000)
print @powershell
set @Pickloc = 'PCK002'
set @powershell = 'powershell.exe  -command """"^XA ^LH0,50^FS ^PR4,4 ^LL2233 ^CI0^FT20,15^A0N,20,20^FDBACKSTOCK^FS ^CI0^FT180,30^A0N,65,65^FDPick Loc: PCK002^FS ^FO50,50^GB700,1,3^FS ^CI0^FT50,114^A0N,65,65^FDSKU: 91007419^FS ^CI0^FT50,184^A0N,65,65^FDBackstock Loc: FL0002^FS ^FO50,200^GB700,1,3^FS ^CI0^FT50,270^A0N,48,48^FDDriver: Driver^FS ^CI0^FT50,330^A0N,48,48^FDFrom Loc: ABC001^FS ^CI0^FT475,330^A0N,48,48^FDTAG: T123456^FS ^XZ""" | Out-Printer -NAME """\\PrintServer\MyPrinter"""""'

print @powershell

EXEC master..xp_cmdshell @powershell

Я ожидаю, что строка будет передана в PowerShell и напечатает ZPL.Я сталкиваюсь с проблемами, которые, я думаю, с escape-символом Windows cmd "^", я также хотел бы передать переменную @Pickloc внутри ZPL, но я не могу сначала пройти эту часть.

1 Ответ

0 голосов
/ 20 мая 2019

Я так и не получил ответа, но вместо введения zpl в команду powershell через xp_cmdshell я прибегнул к созданию текстового файла с zpl с переменными, а затем к вызову этого файла в powershell. Автоматически

...