Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batchsyntax unterschiedlich zwischen Win7 und XP?

Frage Entwicklung Batch & Shell

Mitglied: 72417

72417 (Level 1)

23.09.2010, aktualisiert 19:50 Uhr, 3870 Aufrufe, 6 Kommentare

Moin Moin,
in meinem anderen Thema habe ich das Problem der Druckerinstallation über Windowsconsole behandelt, damit bin ich fertig geworden. Nun beiße ich mir grade an meinen ersten Gehversuchen unter Batchprogrammierung die Zähne aus.
Hier mein Script (wie es unter Win7 funktioniert) und welches nicht unter Win XP läuft.
Vielleicht hat jemand ja einen Rat.

01.
@echo off 
02.
for /F "tokens=13,* delims=:" %%n in ('ipconfig^|find /I "IPv4-Adresse"') do set IP=%%n 
03.
	 if %IP% == 10.1.1.55 ( 
04.
		rundll32 printui.dll,PrintUIEntry /if /b "Drucker_0552" /f %windir%\druckertreiber\oki\5450n\OK72s2lu.inf /r "usb001" /m "OKI C5450n(PCL)" 
05.
	)else ( 
06.
			echo."Fehlgeschlagen, Meine IP:%IP% (erwartet:10.1.1.55)" 
07.
08.
pause 
09.
 
10.
Wie gesagt, unter Win7 funktioniert es insoweit, dass er mir die Fehlermeldung ausgibt, was auch gut ist. 
11.
 
12.
Unter XP habe ich es leicht abgeändert (keine native IPv6 Unterstützung deswegen muss man nach was anderem suchen ;) ) 
13.
Das Script: 
14.
 
15.
@echo off 
16.
for /F "tokens=13,* delims=:" %%n in ('ipconfig^|find /I "IP"') do set IP=%%n 
17.
	 if %IP% == 10.1.1.55 ( 
18.
		rundll32 printui.dll,PrintUIEntry /if /b "Drucker_0552" /f %windir%\druckertreiber\oki\5450n\OK72s2lu.inf /r "usb001" /m "OKI C5450n(PCL)" 
19.
	)else ( 
20.
			echo."Fehlgeschlagen, Meine IP:%IP% (erwartet:10.1.1.55)" 
21.
22.
pause 
23.
 
24.
Mein Problem ist, dass er die Variable nicht setzt, also zum Vergleich: 
25.
 
26.
for /F "tokens=13,* delims=:" %%n in ('ipconfig^|find /I "IP"') do set IP=%%n 
27.
	 echo.%IP%
führt er schon nicht aus, als Ausgabe kommt eine Leerzeile,sprich er setzt die Variable nichteinmal.

Jemand einen Rat?

Mit freundlichen Grüßen
Chris
Mitglied: TheJoker2305
23.09.2010 um 13:20 Uhr
Wird die Batchdatei mit den gleichen Benutzerberechtiggung (Admin) ausgeführt?
Bitte warten ..
Mitglied: 72417
23.09.2010 um 13:21 Uhr
Jap,zwar andere Namen,aber beides sind lokale Adminstratoren.
Zumal ich manuell auf Variablen setzen kann auf dem XP Client
zB:
set IP=%%TMP

und schon setzt er die Variable IP mit dem aktuellen Temp-Verzeichnis gleich.
Bitte warten ..
Mitglied: 60730
23.09.2010 um 14:17 Uhr
Moin,

das mit echo off - bei Problemchenbätchen ist mein alter Hut...

1.001 Wege nach Rom

01.
for /F "tokens=2,3,4,5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a.%%b.%%c.%%d
01.
for /F "tokens=3-6 delims=:. " %a in ('ping %computername%^|find "TTL"') do set IP=%%a.%%b.%%c.%%d
Und dann natürlich auch: - denn %windir%\druckertreiber\oki\ ist kein std.
01.
if exist %windir%\druckertreiber\oki\5450n\OK72s2lu.inf rundll32 printui.dll,PrintUIEntry /if /b "Drucker_0552" /f %windir%\druckertreiber\oki\5450n\OK72s2lu.inf

Gruß

edit @ tse schoka: IPconfig kann - darf jeder Dau - die Gegenfrage war also leicht flüssiger als flüssig überflüssig /edit
Bitte warten ..
Mitglied: 72417
24.09.2010 um 10:28 Uhr
Moin Moin, vielen Dank schonmal für die Hilfe.
ich habe das Script (scheinbar fertig). Funktioniert auch, zumindest bei dem Testclient.
Ich kann euch nicht sagen warum, aber bei dem Druckermodell Brother DCP 7030 streikt das script. Angeblich kann Windows keinen passenden Treiber finden, wenn ich den Drucker jedoch händisch einrichte nehme ich exakt den Treiber, wie er in der Batch steht.
Weiß jemand weiter? Also,

:: Die Batchdatei für automatische Druckerinstallation

@echo off
:: Hier wird die IP ausgelesen und in die Variable "IP" abgespeichert
for /F "tokens=2,3,4,5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a.%%b.%%c.%%d

:: Nun beginnt er seine Schleife und testet die Variable ob die eigene IP bei den Gesuchten dabei ist

::Drucker Installation für den Raum R_Test
if %IP% == 10.1.1.28 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_test" /f %windir%\druckertreiber\oki\C5450n\Ok72s2lu.inf /r "usb001" /m "OKI C5450n(PCL)" )else (
::Drucker Installation für den Raum R_0524
if %IP% == 10.1.1.34 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0524" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030" )else (
::Drucker Installation für den Raum R_0532
if %IP% == 10.1.1.42 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0532" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030")else (
::Drucker Installation für den Raum R_0542
if %IP% == 10.1.1.53 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0542" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030")else (
::Drucker Installation für den Raum R_1534
if %IP% == 10.1.1.66 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1534" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series")else (
::Drucker Installation für den Raum R_1544
if %IP% == 10.1.1.73 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1544" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series")else (
::Drucker Installation für den Raum R_1550
if %IP% == 10.1.1.82 (rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1550" /f %windir%\druckertreiber\oki\B4350\B43503e.inf /r "usb002" /m "OKI B4350(PCL)")else (
::Beendung der Schleife mit einem Log für den jeweiligen Client
echo.An diesem Computer ist kein Drucker angeschlossen > log_%COMPUTERNAME%.txt
)
)
)
)
)
)
)
Bitte warten ..
Mitglied: 60730
24.09.2010 um 17:06 Uhr
Moin,

bitte schreibe deine Batch in Code Blöcke...(siehe Formatierungshilfe)

Ich vermute deine Else ist zu komplex - möglicherweise auch nicht.

Try this one

01.
Rem Teststatus kein @echo off 
02.
 
03.
:: Hier wird die IP ausgelesen und in die Variable "IP" abgespeichert 
04.
Rem for /F "tokens=2,3,4,5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a.%%b.%%c.%%d 
05.
Rem da es wohl es nur um das letzte Oktet geht... 
06.
 for /F "tokens=5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a 
07.
 
08.
:: Nun beginnt er seine Abfrage und testet die Variable ob die eigene IP bei den Gesuchten dabei ist 
09.
 
10.
::Drucker Installation für den Raum R_Test 
11.
if "%IP%"=="28" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_test" /f %windir%\druckertreiber\oki\C5450n\Ok72s2lu.inf /r "usb001" /m "OKI C5450n(PCL)" && goto end 
12.
 
13.
::Drucker Installation für den Raum R_0524 
14.
if "%IP%"=="34" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0524" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030" && goto end 
15.
 
16.
::Drucker Installation für den Raum R_0532 
17.
if "%IP%"=="42" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0532" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030" && goto end 
18.
 
19.
::Drucker Installation für den Raum R_0542 
20.
if "%IP%"=="53" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0542" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "DCP-7030" && goto end 
21.
 
22.
::Drucker Installation für den Raum R_1534 
23.
if "%IP%"=="66" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1534" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series" && goto end 
24.
 
25.
::Drucker Installation für den Raum R_1544 
26.
if "%IP%"=="73" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1544" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series" && goto end 
27.
 
28.
::Drucker Installation für den Raum R_1550 
29.
if "%IP%"=="82" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1550" /f %windir%\druckertreiber\oki\B4350\B43503e.inf /r "usb002" /m "OKI B4350(PCL)" && goto end 
30.
 
31.
::Beendung der Schleife mit einem Log für den jeweiligen Client 
32.
echo An diesem Computer ist kein Drucker angeschlossen/Oder ein anderer Fehler> log_%COMPUTERNAME%.txt 
33.
:end
Gruß
Bitte warten ..
Mitglied: 72417
27.09.2010 um 09:31 Uhr
moin,
Danke für die Hilfe, habe am WE noch a bissl rumgespielt, nun klappts. Und zwar war die Else nicht Schuld, sondern das Model des Brother 7030 das in der .inf steht.
Es heißt nämlich nicht /m "DCP-7030" sondern /m "DCP 7030 Printer". -.-'
normalerweise verlässt man sich ja auf das, was in ner inf steht oder? ;)

[code]
;
; Brother MFC Setup File
; Copyright (c) 2007 Brother Industries,LTD.
; FileName : brpr7030.inf
; Function : Printer
; OS ; Windows2000/XP/2003 SERVER/VISTA
; Model : DCP-7030
;
[/code]

Weiter unten steht jedoch die richtige bezeichnung:

[MFC_PRT]
"Brother DCP-7030 Printer"

Danke an alle Helferlein, endlich weiter gekommen.

Mit freundlichen Grüßen,
Chris
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Humor (lol)
Der Unterschied zwischen USA und USB

Link von BirdyB zum Thema Humor (lol) ...

Windows Server
AD Replikation zwischen untergeordneten Domäne zwingend? (4)

Frage von Gien-app zum Thema Windows Server ...

Microsoft Office
Button für Wechseln zwischen den Tabellenblättern (6)

Frage von lupi1989 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...