Created
January 25, 2021 23:16
-
-
Save Techlogist/09ed2b6efa3110c6f3248ab5868bfb6a to your computer and use it in GitHub Desktop.
Fixing issues with Type-4 printer drivers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
title Remove Drivers | |
mode con:cols=70 lines=15 | |
REM Make sure the print spooler is running | |
:run_spooler | |
for /f "tokens=4" %%i in ('sc query spooler ^| find /i "STATE"') do ( | |
if "%%i" EQU "RUNNING" (cls && timeout /T 5 /NOBREAK>null && goto confirmed_spooler) else ^ | |
if "%%i" EQU "STOPPED" (cls && sc start spooler && timeout /T 10 /NOBREAK>null && goto run_spooler) else ^ | |
if "%%i" NEQ "RUNNING" (cls && sc start spooler && timeout /T 5 /NOBREAK>null && goto run_spooler) | |
) | |
:confirmed_spooler | |
REM Map all useless printer drivers | |
set _driver_name=driver_%random% | |
wmic /output:"%temp%\%_driver_name%.csv" printer get drivername /format:csv | |
type "%temp%\%_driver_name%.csv" > "%temp%\file_%_driver_name%.txt" | |
for /f "tokens=2 skip=2 delims=," %%g in (%temp%\file_%_driver_name%.txt) do ( | |
if "%%g" equ "DriverName" (echo >nul) else ^ | |
if "%%g" equ "Driver name to Stay" (echo >nul) else ^ | |
if "%%g" equ "Driver name to Stay" (echo >nul) else ^ | |
echo %%g>>"%temp%\file_%_driver_name%_cl.txt" | |
) | |
REM Delete the printer drivers | |
for /f "delims=;" %%q in (%temp%\file_%_driver_name%_cl.txt) do (rundll32 printui.dll,PrintUIEntry /dd /m "%%q" /q) | |
REM To delete the drivers we need to restart the print spooler | |
net stop spooler | |
net start spooler | |
REM Continue when print spooler is running | |
:check_spooler | |
for /f "tokens=4" %%i in ('sc query spooler ^| find /i "STATE"') do ( | |
if "%%i" EQU "RUNNING" (cls && goto after_spooler) else ^ | |
if "%%i" NEQ "RUNNING" (cls && timeout /T 5 /NOBREAK>null && goto check_spooler) | |
) | |
:after_spooler | |
REM Delete all the temporary files for Printer | |
del "%temp%\%_driver_name%.csv" | |
del "%temp%\file_%_driver_name%.txt" | |
del "%temp%\file_%_driver_name%_cl.txt" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
REM Make sure the print spooler is running | |
:run_spooler | |
for /f "tokens=4" %%i in ('sc query spooler ^| find /i "STATE"') do ( | |
if "%%i" EQU "RUNNING" (cls && goto confirmed_spooler) else ^ | |
if "%%i" EQU "STOPPED" (cls && sc start spooler && timeout /T 5 /NOBREAK>null && goto run_spooler) else ^ | |
if "%%i" NEQ "RUNNING" (cls && sc start spooler && timeout /T 5 /NOBREAK>null && goto run_spooler) | |
) | |
:confirmed_spooler | |
REM Map all useless printer drivers | |
set _driver_name=driver_%random% | |
wmic /output:"%temp%\%_driver_name%.csv" printer get drivername /format:csv | |
type "%temp%\%_driver_name%.csv" > "%temp%\file_%_driver_name%.txt" | |
for /f "tokens=2 skip=2 delims=," %%g in (%temp%\file_%_driver_name%.txt) do ( | |
if "%%g" equ "DriverName" (echo >nul) else ^ | |
if "%%g" equ "Driver name to Stay" (echo >nul) else ^ | |
if "%%g" equ "Driver name to Stay" (echo >nul) else ^ | |
echo %%g>>"%temp%\file_%_driver_name%_cl.txt" | |
) | |
REM Map all useless printers | |
set _printer_name=printer_%random% | |
wmic /output:"%temp%\%_printer_name%.csv" printer get name /format:csv | |
type "%temp%\%_printer_name%.csv" > "%temp%\file_%_printer_name%.txt" | |
for /f "tokens=2 skip=2 delims=," %%g in (%temp%\file_%_printer_name%.txt) do ( | |
if "%%g" equ "Name" (echo >nul) else ^ | |
if "%%g" equ "Printer name to Stay" (echo >nul) else ^ | |
if "%%g" equ "Printer name to Stay" (echo >nul) else ^ | |
echo %%g>>"%temp%\file_%_printer_name%_cl.txt" | |
) | |
REM Delete the printers | |
for /f "delims=;" %%p in (%temp%\file_%_printer_name%_cl.txt) do (rundll32 printui.dll,PrintUIEntry /dl /n "%%p") | |
REM To delete the drivers we need to restart the print spooler | |
net stop spooler | |
net start spooler | |
REM Continue when print spooler is running | |
:check_spooler | |
for /f "tokens=4" %%i in ('sc query spooler ^| find /i "STATE"') do ( | |
if "%%i" EQU "RUNNING" (cls && goto after_spooler) else ^ | |
if "%%i" NEQ "RUNNING" (cls && timeout /T 5 /NOBREAK>null && goto check_spooler) | |
) | |
:after_spooler | |
REM Delete the printer drivers | |
for /f "delims=;" %%q in (%temp%\file_%_driver_name%_cl.txt) do (rundll32 printui.dll,PrintUIEntry /dd /m "%%q") | |
REM Delete all the temporary files for Printer | |
del "%temp%\%_driver_name%.csv" | |
del "%temp%\file_%_driver_name%.txt" | |
del "%temp%\file_%_driver_name%_cl.txt" | |
REM Delete all the temporary files for Printer | |
del "%temp%\%_printer_name%.csv" | |
del "%temp%\file_%_printer_name%.txt" | |
del "%temp%\file_%_printer_name%_cl.txt" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment