flauschbobbel
Goto Top

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

 
@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
:: ----------------------------------------------------------------------

Content-ID: 93177

Url: https://administrator.de/contentid/93177

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

36831
36831 29.07.2008 um 22:04:59 Uhr
Goto Top
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
Flauschbobbel
Flauschbobbel 29.07.2008 um 22:41:18 Uhr
Goto Top
Hallo VW,

face-wink) Na, das will ich Dich mal aufklären:
Also, Flauschbobbel ist ein Kunstwort und setzt sich aus Flauschig (also weich) und Bobbel (im Hessischen abgeleitet von Bobbelche= "goldiger Kleiner") zusammen. Hat mir mal meine bessere Hälfte angetextet, als meine Haare noch voller und weicher waren... (Lang, lang ist's her..) Ich habe nix mit "Bobbelche" Mark Medlock zu tun, nur zur Klarstellung!! Ich hatte den Namen schon weg, da wusste noch niemand was von Bohlen's Neuentdeckung. face-wink

Grüße,
Flauschbobbel
67369
67369 29.07.2008 um 22:49:51 Uhr
Goto Top
Also frei übersetzt ein Knuddelbär. face-smile
Flauschbobbel
Flauschbobbel 29.07.2008 um 22:53:37 Uhr
Goto Top
Yep, im weitesten Sinne... face-wink
bastla
bastla 29.07.2008 um 22:57:46 Uhr
Goto Top
Hallo Flauschbobbel!

Ein wenig kürzer ist's so ja doch (aber auch ziemlich ungetestet face-wink):
@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
:: ----------------------------------------------------------------------
Grüße
bastla
Flauschbobbel
Flauschbobbel 29.07.2008 um 23:57:24 Uhr
Goto Top
Hallo bastla,

das sieht ja richtig übersichtlich aus. Ich werde es morgen im Büro nochmals ausführlich testen.
Nach eine Frage:
Was meinst Du, wie sollte ich den Aufruf zum Installieren der Printertreiber in einem eigenen Script (AddPrntDrv.cmd) sinnvoll aufrufen?
Mit START /WAIT aus obigem Script heraus? Damit ich warte bis die Installation der Treiber vom anderen Script erledigt wurde? Muss ich warten?

Danke und Grüße,
Flauschbobbel
bastla
bastla 30.07.2008 um 00:43:11 Uhr
Goto Top
Hallo Flauschbobbel!

Ob es sinnvoll ist, auf das Ende des anderen Batches zu warten, kann ich nicht beurteilen; aber falls Du das willst, genügt auch ein Aufruf per "call AddPrntDrv.cmd" ...

Grüße
bastla
Biber
Biber 30.07.2008 um 01:16:49 Uhr
Goto Top
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..

...
:: 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.
Flauschbobbel
Flauschbobbel 30.07.2008 um 19:18:42 Uhr
Goto Top
Hallo bastla, hallo Biber,

herzlichen Dank! Es funktioniert sehr gut. Ich habe mich übrigens für Variante A entschieden, das hat einen gewissen Charme. Die Errorlevels habe ich auch rausgelassen.
Danke für die Ratschläge.

Viele Grüße,
Flauschbobbel