@echo off REM Quick test for Windows generation: UAC aware or not ; all OS before NT4 ignored for simplicity SET NewOSWith_UAC=YES VER | FINDSTR /IL "5." > NUL IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO VER | FINDSTR /IL "4." > NUL IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO REM Test if Admin CALL NET SESSION >nul 2>&1 IF NOT %ERRORLEVEL% == 0 ( if /i "%NewOSWith_UAC%"=="YES" ( rem Start batch again with UAC echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /B ) rem Program will now start again automatically with admin rights! rem pause goto :eof ) :: IP-Adresse eingeben set /p PRINTER_IP="Gib die IP-Adresse des Druckers ein: " :: Druckernamen eingeben set /p PRINTER_NAME="Gib den Namen des Druckers ein (ohne SW/Farbe): " :: Standarddrucker-Liste setzen (SW und Farbe) set PRINTER_LIST="%PRINTER_NAME% (SW)" "%PRINTER_NAME% (Farbe)" :: Treiberpfad-Abfrage set /p CUSTOM_PATH="Willst du einen eigenen Treiberpfad eingeben? (J/N): " IF /I "%CUSTOM_PATH%"=="J" GOTO custom_path IF /I "%CUSTOM_PATH%"=="N" GOTO default_path ECHO Ungueltige Eingabe, bitte J oder N eingeben. GOTO end :custom_path set /p DRIVER_PATH="Gib den Pfad zum Treiberordner an: " set DELETE_DRIVER_PATH=0 GOTO check_path :default_path :: Nutzt automatisch den Pfad der Batch-Datei set BASE_PATH=%~dp0 set DRIVER_PATH=%BASE_PATH%hp-treiber set DELETE_DRIVER_PATH=1 echo Verwende automatisch den Treiberordner: %DRIVER_PATH% :: Pruefe, ob der Treiberordner existiert if not exist "%DRIVER_PATH%" ( echo Treiber nicht gefunden! Lade ihn herunter... :: Treiber von HP herunterladen powershell -Command "(New-Object System.Net.WebClient).DownloadFile('https://ftp.hp.com/pub/softlib/software13/printers/UPD/upd-pcl6-x64-7.3.0.25919.zip', '%BASE_PATH%hp-treiber.zip')" :: Pruefen, ob der Download erfolgreich war if not exist "%BASE_PATH%hp-treiber.zip" ( echo Fehler: Der Treiber konnte nicht heruntergeladen werden! pause exit /b ) echo Entpacke den Treiber... powershell -Command "Expand-Archive -Path '%BASE_PATH%hp-treiber.zip' -DestinationPath '%BASE_PATH%hp-treiber' -Force" :: Pruefen, ob das Entpacken erfolgreich war if not exist "%BASE_PATH%hp-treiber" ( echo Fehler: Das Entpacken ist fehlgeschlagen! pause exit /b ) echo Entferne die ZIP-Datei... del "%BASE_PATH%hp-treiber.zip" echo Treiber wurde erfolgreich heruntergeladen und entpackt. ) GOTO check_path :check_path :: Pruefe, ob der Treiberordner existiert if not exist "%DRIVER_PATH%" ( echo Fehler: Der Treiberordner "%DRIVER_PATH%" existiert nicht! pause exit /b ) :: Port erstellen echo Erstelle TCP/IP-Port... for /f %%P in ('cscript //nologo "%WINDIR%\System32\Printing_Admin_Scripts\de-DE\prnport.vbs" -l ^| findstr /i "%PRINTER_IP%"') do ( set PORT_EXISTS=true echo Port found ) if %PORT_EXISTS% equ true ( echo Port nicht gefunden, erstelle Port... cscript "%WINDIR%\System32\Printing_Admin_Scripts\de-DE\prnport.vbs" -a -r %PRINTER_IP% -h %PRINTER_IP% -o raw ) :: Druckertreiber installieren (automatische INF-Suche) echo Installiere Druckertreiber aus: %DRIVER_PATH% ... pnputil /add-driver "%DRIVER_PATH%\*.inf" /install :: Drucker installieren (inklusive der zusaetzlichen Drucker) for %%P in (%PRINTER_LIST%) do ( echo Installiere Drucker: %%P ... rundll32 printui.dll,PrintUIEntry /if /b %%P /r "%PRINTER_IP%" /m "HP Universal Printing PCL 6" ) :: Nach Installation den Registry-Wert für SW-Drucker setzen echo Setze Standarddrucker-Einstellungen nach OH5 Standard... powershell -ExecutionPolicy Bypass -File "%BASE_PATH%do_default_printersettings.ps1" -PrinterName "%PRINTER_NAME% (SW)" :: Standarddrucker setzen set /p SET_DEFAULT="Soll '%PRINTER_NAME% (SW)' als Standard gesetzt werden? (J/N): " IF /I "%SET_DEFAULT%"=="J" GOTO set_default GOTO cleanup :set_default rundll32 printui.dll,PrintUIEntry /y /n "%PRINTER_NAME% (SW)" echo "%PRINTER_NAME% (SW)" ist jetzt der Standarddrucker. :cleanup :: Treiberordner loeschen, nur wenn der Benutzer "N" gewaehlt hat if "%DELETE_DRIVER_PATH%"=="1" ( if exist "%DRIVER_PATH%" ( echo Entferne den heruntergeladenen Treiberordner... rmdir /s /q "%DRIVER_PATH%" echo Treiberordner erfolgreich geloescht. ) ) :end echo Installation abgeschlossen. pause