type file.txt | findstr /bi "USB001" && (
echo wmic printer where portname="USB001" call setdefaultprinter
) || (
echo wmic printer where "PortName like '%%samsungm'" call setdefaultprinter
)
wmic printer get portname
выводит Unicode, поэтому файл будет иметь кодировку UTF16-LE. Попробуйте передать от type file.txt
до findstr
, чтобы лучше обрабатывать findstr
.
Если вы можете просмотреть файл в шестнадцатеричном редакторе, вы можете заметить nuls 00
рядом с каждым символом. Это указание на 2 байта на символ, так что это будет Unicode, так как ANSI равен 1 байту на символ.
Или вы можете передать из wmic
:
wmic printer get portname | findstr /bi "USB001" && (
echo wmic printer where portname="USB001" call setdefaultprinter
) || (
echo wmic printer where "PortName like '%%samsungm'" call setdefaultprinter
)
, который появляется что findstr
нормально обрабатывает поток по каналу.