Мы устанавливали несколько новых компьютеров в моей компании, и эти новые компьютеры поставлялись с Windows 10, а до этого мы использовали Windows 7. Первой проблемой, с которой мы столкнулись, было то, как Windows 10 управляет принтеры, не выбирая по умолчанию. Мне удалось отключить его с помощью командного файла, который выполняется каждый раз, когда кто-то входит в систему, изменяя реестр.
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LegacyDefaultPrinterMode /t "REG_DWORD" /d "1" /f
После этого, когда управление принтером было отключено, Windows вызывал любые принтеров по умолчанию, поэтому я отредактировал командный файл, чтобы установить локальный принтер, подключенный к USB001, по умолчанию.
wmic printer where portname="USB001" call setdefaultprinter
Однако некоторые компьютеры используют удаленный принтер, подключенный как локальный порт, используя имя удаленного компьютера - «\\ ComputerName \ SamsungM» (имя компьютера может измениться, но все принтеры заканчиваются на «SamsungM»). Я попытался изменить пакет еще раз. Теперь он должен назначить принтер USB001 по умолчанию, если он подключен, и, если нет, назначить по умолчанию тот, в котором имя порта заканчивается как «samsungm», но пакет не работает ...
set var=wmic printer get portname
%var% > portas.txt
if /I "%samsungm" == "portas.txt" equal (
wmic printer where "PortName like '%samsungm'" call setdefaultprinter
) else (
wmic printer where portname="USB001" call setdefaultprinter
)
Отдельные команды для установки принтера по умолчанию работают, что привело меня к мысли, что это должен быть синтаксис If, что я ошибаюсь. Кто-нибудь может мне помочь?
EDIT1: После некоторой помощи в комментариях я понял несколько ошибок ... Может быть, это выглядит немного больше того, что я хочу сделать:
C:\set var=wmic printer get portname
C:\%var%
PortName
\\ses267827\samsungm
usb001
C:\%var% > ports.txt
C:\findstr /E /I ".samsungm" ports.txt
C:\if ERRORLEVEL 0 (wmic printer where "PortName like '%samsungm'" call setdefaultprinter) else (wmic printer where portname="USB001" call setdefaultprinter)
Но это все еще не работает ...
РЕДАКТИРОВАТЬ 2: Я только что понял, что это назад. Это должно быть
C:\set var=wmic printer get portname
C:\%var%
PortName
\\ses267827\samsungm
usb001
C:\%var% > ports.txt
C:\findstr /E /I "usb001" ports.txt
C:\if ERRORLEVEL 0 (wmic printer where portname="USB001" call setdefaultprinter) else (wmic printer where "PortName like '%%samsungm'" call setdefaultprinter)
Я протестирую его через несколько минут.
EDIT3: Тесты выполнены. Работал для принтера USB, но не для SamsungM. Кажется, что ERRORLEVEL
не меняется, когда findstr
не находит usb001
в файле ports.txt.