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-Key: 93177

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

Printed on: April 19, 2024 at 21:04 o'clock

Mitglied: 36831
36831 Jul 29, 2008 at 20:04:59 (UTC)
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
Member: Flauschbobbel
Flauschbobbel Jul 29, 2008 at 20:41:18 (UTC)
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
Mitglied: 67369
67369 Jul 29, 2008 at 20:49:51 (UTC)
Goto Top
Also frei übersetzt ein Knuddelbär. face-smile
Member: Flauschbobbel
Flauschbobbel Jul 29, 2008 at 20:53:37 (UTC)
Goto Top
Yep, im weitesten Sinne... face-wink
Member: bastla
bastla Jul 29, 2008 at 20:57:46 (UTC)
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
Member: Flauschbobbel
Flauschbobbel Jul 29, 2008 at 21:57:24 (UTC)
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
Member: bastla
bastla Jul 29, 2008 at 22:43:11 (UTC)
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
Member: Biber
Biber Jul 29, 2008 at 23:16:49 (UTC)
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.
Member: Flauschbobbel
Flauschbobbel Jul 30, 2008 at 17:18:42 (UTC)
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