Verbesserungsvorschlag?
Hallo Zusammen,
ich habe nachfolgendes Script, das auch funktioniert. Ich bin der Ansicht, das ist nur viel
zu groß und man kann es sicherlich etwas besser zusammenfassen. Nur habe ich keine Idee wie ich es besser machen kann.
Könnt Ihr mir Tipps geben?
Ich möchte mit dem Script überprüfen, ob ggf. installierte Treiberdateien in dem Verzeichnis alle vorhanden sind,
wenn eine Datei oder das ganze Verzeichnis fehlt, sollen die Treiber erneut installiert werden.
(Das habe ich hier weggelassen, mach ich mit rundll32 printui.dll,PrintUIEntry /ia /m %ModellDruckerTreiber% /f %INFfile%)
Das Installieren der Printertreiber mache ich in einem eigenen Script (AddPrntDrv.cmd)
Wie kann ich das von diesem Script hier am sinnvollsten aufrufen?
Mit START /WAIT ? Damit ich warte bis die Installation der Treiber vom anderen Script erledigt wurde?
Muss ich warten? Dieses Script prüft, ob die Treiberfiles alle vorhanden sind, wenn nein, dann starte die Installation im Script AddPrntDrv.cmd
Gibt es was eleganteres? Oder wie macht ihr das?
Sorry, aber ich bin nicht soooo ganz fit im Thema Batch und Scripte und taste mich langsam vorwärts...
Danke für Eure Hilfe,
Flauschbobbel
ich habe nachfolgendes Script, das auch funktioniert. Ich bin der Ansicht, das ist nur viel
zu groß und man kann es sicherlich etwas besser zusammenfassen. Nur habe ich keine Idee wie ich es besser machen kann.
Könnt Ihr mir Tipps geben?
Ich möchte mit dem Script überprüfen, ob ggf. installierte Treiberdateien in dem Verzeichnis alle vorhanden sind,
wenn eine Datei oder das ganze Verzeichnis fehlt, sollen die Treiber erneut installiert werden.
(Das habe ich hier weggelassen, mach ich mit rundll32 printui.dll,PrintUIEntry /ia /m %ModellDruckerTreiber% /f %INFfile%)
Das Installieren der Printertreiber mache ich in einem eigenen Script (AddPrntDrv.cmd)
Wie kann ich das von diesem Script hier am sinnvollsten aufrufen?
Mit START /WAIT ? Damit ich warte bis die Installation der Treiber vom anderen Script erledigt wurde?
Muss ich warten? Dieses Script prüft, ob die Treiberfiles alle vorhanden sind, wenn nein, dann starte die Installation im Script AddPrntDrv.cmd
Gibt es was eleganteres? Oder wie macht ihr das?
Sorry, aber ich bin nicht soooo ganz fit im Thema Batch und Scripte und taste mich langsam vorwärts...
Danke für Eure Hilfe,
Flauschbobbel
@echo off & setlocal
set "TmpFileToChk="
set "DoInstallDrv="
:: ----------------------------------------------------------------------
:CHK_FILES_EXIST
:: ----------------------------------------------------------------------
:: ================================
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d"
if exist %TmpFileToChk% (
echo Verzeichnis: %TmpFileToChk% vorhanden --- Status: %errorlevel%
REM call :WRITELOG "Verzeichnis: %TmpFileToChk% vorhanden --- Status: %errorlevel%"
) else (
echo ERROR: Verzeichnis: %TmpFileToChk% fehlt! --- Status: %errorlevel%
REM call :WRITELOG "ERROR: Verzeichnis: %TmpFileToChk% fehlt! --- Status: %errorlevel%"
goto INSTALLATION_DRV
)
set "TmpFileToChk="
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\JCUI.EXE
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\JCUI.EXE"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.cnt
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.cnt"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.HLP
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.HLP"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.PDF
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I.PDF"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I2K.RCF
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63I2K.RCF"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ia.INI
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ia.INI"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ia.XPI
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ia.XPI"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63IBD.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63IBD.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ic.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ic.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Il.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Il.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ip.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Ip.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Iu.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63Iu.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63IWM.EXE
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RIC63IWM.EXE"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RICJC32.dll
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\RICJC32.dll"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TIBASE64.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TIBASE64.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TIFMTA.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TIFMTA.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: --------------------------------
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TrackID.DLL
set "TmpFileToChk=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d\TrackID.DLL"
call :CHK_FILES_EXIST_ROUTINE
If defined DoInstallDrv goto INSTALLATION_DRV
:: ================================
goto ENDE
:: ----------------------------------------------------------------------
:INSTALLATION_DRV
:: ----------------------------------------------------------------------
echo ...nun werden die Driver nochmals installiert...
echo ...mit rundll32 printui.dll,PrintUIEntry /ia /m %ModellDruckerTreiber% /f %INFfile%
goto ENDE
:: ----------------------------------------------------------------------
:CHK_FILES_EXIST_ROUTINE
:: ----------------------------------------------------------------------
If defined Tst echo %TstInfoMsg% CHK_FILES_EXIST_ROUTINE
if exist %TmpFileToChk% (
echo File: %TmpFileToChk% vorhanden --- Status: %errorlevel%
rem call :WRITELOG "File: %TmpFileToChk% vorhanden --- Status: %errorlevel%"
) else (
echo ERROR: File: %TmpFileToChk% fehlt! --- Status: %errorlevel%
set "DoInstallDrv=True"
echo %DoInstallDrv%
REM call :WRITELOG "ERROR: File: %TmpFileToChk% fehlt! --- Status: %errorlevel%"
)
set "TmpFileToChk="
goto :eof
:: ----------------------------------------------------------------------
:ENDE
:: ----------------------------------------------------------------------
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93177
Url: https://administrator.de/contentid/93177
Ausgedruckt am: 05.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
sorry, dass ich komplett Off Topic bin, aber eine Sache muss ich einfach fragen:
+++Was ist bitte ein Flauschbobbel?
Bei dem Skript kann ich dir so leider nicht weiterhelfen.
Gruß,
VW
sorry, dass ich komplett Off Topic bin, aber eine Sache muss ich einfach fragen:
+++Was ist bitte ein Flauschbobbel?
Bei dem Skript kann ich dir so leider nicht weiterhelfen.
Gruß,
VW
Also frei übersetzt ein Knuddelbär.
Hallo Flauschbobbel!
Ein wenig kürzer ist's so ja doch (aber auch ziemlich ungetestet ):
Grüße
bastla
Ein wenig kürzer ist's so ja doch (aber auch ziemlich ungetestet ):
@echo off & setlocal
set "DrvPath=%windir%\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d"
:: --------------------------------
::DATA JCUI.EXE
::DATA RIC63I.cnt
::DATA RIC63I.HLP
::DATA RIC63I.PDF
::DATA RIC63I2K.RCF
::DATA RIC63Ia.INI
::DATA RIC63Ia.XPI
::DATA RIC63IBD.DLL
::DATA RIC63Ic.DLL
::DATA RIC63Il.DLL
::DATA RIC63Ip.DLL
::DATA RIC63Iu.DLL
::DATA RIC63IWM.EXE
::DATA RICJC32.dll
::DATA TIBASE64.DLL
::DATA TIFMTA.DLL
::DATA TrackID.DLL
:: --------------------------------
set "TmpFileToChk="
set "DoInstallDrv="
:: ----------------------------------------------------------------------
:CHK_FILES_EXIST
:: ----------------------------------------------------------------------
:: ================================
:: C:\WINDOWS\system32\spool\drivers\w32x86\ricohaficio_sp_4100ne89d
set "TmpFileToChk=%DrvPath%\"
if exist "%TmpFileToChk%" (
echo Verzeichnis: %TmpFileToChk% vorhanden --- Status: %errorlevel%
REM call :WRITELOG "Verzeichnis: %TmpFileToChk% vorhanden --- Status: %errorlevel%"
) else (
echo ERROR: Verzeichnis: %TmpFileToChk% fehlt! --- Status: %errorlevel%
REM call :WRITELOG "ERROR: Verzeichnis: %TmpFileToChk% fehlt! --- Status: %errorlevel%"
goto INSTALLATION_DRV
)
for /f "tokens=1*" %%i in ('findstr /b /c:"::DATA " "%~f0"') do (
call :CHK_FILES_EXIST_ROUTINE "%DrvPath%\%%~j"
If defined DoInstallDrv goto INSTALLATION_DRV
)
:: ================================
goto ENDE
:: ----------------------------------------------------------------------
:INSTALLATION_DRV
:: ----------------------------------------------------------------------
echo ...nun werden die Driver nochmals installiert...
echo ...mit rundll32 printui.dll,PrintUIEntry /ia /m %ModellDruckerTreiber% /f %INFfile%
goto ENDE
:: ----------------------------------------------------------------------
:CHK_FILES_EXIST_ROUTINE
:: ----------------------------------------------------------------------
If defined Tst echo %TstInfoMsg% CHK_FILES_EXIST_ROUTINE
set "TmpFileToChk=%~1"
if exist "%TmpFileToChk%" (
echo File: %TmpFileToChk% vorhanden --- Status: %errorlevel%
rem call :WRITELOG "File: %TmpFileToChk% vorhanden --- Status: %errorlevel%"
) else (
echo ERROR: File: %TmpFileToChk% fehlt! --- Status: %errorlevel%
set "DoInstallDrv=True"
echo %DoInstallDrv%
REM call :WRITELOG "ERROR: File: %TmpFileToChk% fehlt! --- Status: %errorlevel%"
)
set "TmpFileToChk="
goto :eof
:: ----------------------------------------------------------------------
:ENDE
:: ----------------------------------------------------------------------
bastla
Moin Flauschbobbel und bastla,
ein konzeptionelles Detail würde ich ändern:
Die FOR /F-Anweisung (in bastlas Lösung ca Zeile 41-45).
Ich würde -auch wenn ich schon weiß dass eine Inst-Datei fehlt, dennoch die FOR-Anweisung durchnudeln lassen.
Das "Verlassen" einer FOR-Anweisung ist eigentlich vom sympathischen Weltmarktführer nicht vorgesehen, geschweige denn zugesichert.
Wenn so etwas gemacht wird, dann bestenfalls in diesem Forum - aber wenn es nicht unbedingt in einem produktiven Batch sein muss..
Grüße
Biber
P.S. Kleinkram: die %errorlevel%-Echos werden nichts Aussagefähiges bringen in einer IF . ELSE -ZEILE.
Entweder mit DelayedExpansion arbeiten.... aber eher einfach weglassen.
Inhalt von %errorlevel% ist hier 1 oder 0.
Informationsgehalt von Errorlevel im obigen Batch ist immer 0.
ein konzeptionelles Detail würde ich ändern:
Die FOR /F-Anweisung (in bastlas Lösung ca Zeile 41-45).
Ich würde -auch wenn ich schon weiß dass eine Inst-Datei fehlt, dennoch die FOR-Anweisung durchnudeln lassen.
Das "Verlassen" einer FOR-Anweisung ist eigentlich vom sympathischen Weltmarktführer nicht vorgesehen, geschweige denn zugesichert.
Wenn so etwas gemacht wird, dann bestenfalls in diesem Forum - aber wenn es nicht unbedingt in einem produktiven Batch sein muss..
...
:: Variante A: Immer alle Inst-Dateien prüfen und
:: alle fehlenden ins Log schreiben
for /f "tokens=1*" %%i in ('findstr /b /c:"::DATA " "%~f0"') do (
call :CHK_FILES_EXIST_ROUTINE "%DrvPath%\%%~j"
)
If defined DoInstallDrv goto INSTALLATION_DRV
::
...
:: Variante B: Nur bis zur ersten fehlenden Inst-Dateien prüfen
:: aber die FOR-Anweisung zu Ende bringen
for /f "tokens=1*" %%i in ('findstr /b /c:"::DATA " "%~f0"') do (
If defined DoInstallDrv call :CHK_FILES_EXIST_ROUTINE "%DrvPath%\%%~j"
)
If defined DoInstallDrv goto INSTALLATION_DRV
::
Grüße
Biber
P.S. Kleinkram: die %errorlevel%-Echos werden nichts Aussagefähiges bringen in einer IF . ELSE -ZEILE.
Entweder mit DelayedExpansion arbeiten.... aber eher einfach weglassen.
Inhalt von %errorlevel% ist hier 1 oder 0.
Informationsgehalt von Errorlevel im obigen Batch ist immer 0.