marsmars
Goto Top

Batchdatei bricht bei XP bei IF ab, bei windows 2000 läuft es

Netlogonscript zum auswälen des Standarddruckers im Raum nach der Anleitung mit dsquery.exe von
http://www.gruppenrichtlinien.de/howto/Anmelde_Scripts.htm (unten)

Das Script (Auszug)

@echo off


for /f "Tokens=2 Delims=," %%i in ('\\bva.local\netlogon\set-default-printer\dsquery computer -name %computername%') do set aktuelleOU=%%i

echo %aktuelleOU%
echo.
IF %aktuelleOU%==OU=C0.08 goto C0.08
if %aktuelleOU%==OU=C0.07 goto C0.07
if %aktuelleOU%==OU=C0.02 goto C0.02
if %aktuelleOU%==OU=C0.03 goto C0.02
if %aktuelleOU%==OU=C1.01 goto C1.01
if %aktuelleOU%==OU=C1.07 goto C1.07

goto end

:C.08
...


Konnte die Abbruchstelle lokalisieren....
Bei Windows XP bricht er bei beim ersten if bzw bei der IF-Verzweigung ab. An der groß / klein Schreigung liegt es nicht.
Bei 2000 läuft das Script

Danke im Vorraus für eure Hilfe

Content-ID: 108849

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

Ausgedruckt am: 18.11.2024 um 09:11 Uhr

60730
60730 12.02.2009 um 16:29:33 Uhr
Goto Top
Servus,

das script scheint mir aber sehr eingestaubt..und könnte auch eine Diät gut vertragen.

for /f "Tokens=2 Delims=," %%i in ('\\bva.local\netlogon\set-default-printer\dsquery computer -name %computername%') do set aktuelleOU=%%i  

echo %aktuelleOU%
if not "%aktuelleOU%"=="" goto "%aktuelleOU%"  

Aber an der Diät liegt es sicher nicht.

Wird / kommt bei echo %aktuelleOU% unter Xp etwas raus?

Hab jetzt nicht die Zeit, das script genauer unter die Lupe zu nehmen / eine Umgebung dafür zu bauen.

Kannst du den eingegrentzen Fehler etwas genauer beschreiben?
Liegts evtl. nur an rechten oder an dem Pfad?

Gruß
marsmars
marsmars 12.02.2009 um 17:40:04 Uhr
Goto Top
durch
echo %aktuelle%
wird das gewünschte ergebnis geliefert z.B. OU ist C0.08, dann OU=C0.08
erst dadurch konnte icgh das Problem lokalisieren.

Unter Pfad verstehst du bva.local\netlogon\set-default-printer\dsquery ??
Zu Recht: Sowohl als Administrator als auch eingeschränkter User klapp tes nicht diöt usw. werde ich ausprobieren
danke
miniversum
miniversum 12.02.2009 um 18:24:23 Uhr
Goto Top
Ändere die Ifs mal so ab (nurmal das erste als Beispiel):
IF "%aktuelleOU%" equ "OU=C0.08" goto C0.08
marsmars
marsmars 13.02.2009 um 23:53:01 Uhr
Goto Top
Hi,
Ich kann alle angegeben Änderungsvorschläge leider erst in 2 Wochen ausprobieren :'( (LK Vorabiklausur, Karneval ... )
Mit
IF not ...  
würde ich aber nicht zur Abfrage meherer Möglichkeiten kommen, ich werde es testen.

Mit
Zitat von @miniversum:
 IF "%aktuelleOU%" equ "OU=C0.08" goto C0.08   

arbeite ich dann wohl lieber.

PS: Danke für eure Hilfe ihr beiden
marsmars
marsmars 16.02.2009 um 14:13:25 Uhr
Goto Top
Hallo noch mal,
so sieht der Quelltext jetzt aus:
rem ** Hiermit erstellen wir uns eine eigene Variable => %aktuelleOU% die dann **
rem ** im weiteren Verlauf des Scriptes zur Abfrage benutzt werden kann **
rem ** dsquery.exe ist beim 2003 Server dabei
rem ** gleiche Abfrage liesse sich auch für den Benutzer erstellen.
 
for /f "Tokens=2 Delims=," %%i in ('\\bva.local\netlogon\set-default-printer\dsquery computer -name %computername%') do set aktuelleOU=%%i  

echo %aktuelleOU%
echo. 
Pause
if not %aktuelleOU% equ C0.08 goto neu
if not %aktuelleOU% equ C0.07 goto C0.07
goto end

:C0.07 
	ping dc2 -n 1 -w 20 %1 | findstr "TTL=" >NUL  
	if %errorlevel%==0 goto ok-C0.07 
	if %errorlevel%==1 goto Fehler

	goto end

		:ok-C0.07
			echo Server DC2 in C0.07 erreichbar.
			echo Drucker in C0.07 wird verbunden...
			echo.
			\\bva.local\NETLOGON\con2prt.exe /f
			\\bva.local\NETLOGON\con2prt.exe /cd \\dc2\1000-C0.07
			echo off Drucker wurde verbunden
			echo.

		goto end


 

:neu	
Pause
	ping dc2 -n 1 -w 20 %1 | findstr "TTL=" >NUL  
	if %errorlevel%==0 goto ok-C0.08 
	if %errorlevel%==1 goto Fehler
	goto end

		:ok-C0.08
			echo Server DC2 in C0.07 erreichbar.
			echo Drucker in C0.08 wird verbunden...
			echo.
			\\bva.local\NETLOGON\con2prt.exe /f
			\\bva.local\NETLOGON\con2prt.exe /cd \\dc2\1022n-C0.08
			echo off Drucker wurde verbunden
			echo.

		goto end



:Fehler
	echo Server DC2 in C0.07 nicht erreichbar!!!!!!
	echo Drucker in C0.07 wird nicht verbunden...
	echo.
	goto end

:end
echo Srcipt erstellt von Mir
echo.
Pause
Die Ausgabe
"\\bva\sysvol\BVA.local\scripts\set-default-printer"  
CMD.EXE wurde mit dem oben angebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.

C:\WINDOWS>rem **  ........... gekürzt..........

C:\WINDOWS>for /F "Tokens=2 Delims=," %i in ('\\bva.local\netlogon\set-default-p  
rinter\dsquery computer -name SN021007006') do set aktuelleOU=%i  

C:\WINDOWS>set aktuelleOU=OU=C0.08

C:\WINDOWS>echo OU=C0.08
OU=C0.08

C:\WINDOWS>echo.


C:\WINDOWS>Pause
Drücken Sie eine beliebige Taste . . .
Danach bricht er ab, wenn ich drücke ...

mit "if not" auch,

genauso mit
if not %aktuelleOU% equ C0.08 goto neu

"if 1==1 goto neu" funktioniert
genauso wie "if exsit ..."

mh vll. sollte ich das "OU=" aus dem string entfernen, das dauert aber... lerne jetzt,
gruß aus dem rheinland das im Karneval fieber ist
MarsMars
60730
60730 16.02.2009 um 14:34:47 Uhr
Goto Top
Servus,

um den Fehler:
UNC-Pfade werden nicht unterstützt.

Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
loszuwerden, bitte den Key ändern / eintragen
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001  

wegen dem rest - sorry - kein Karneval - sondern ein paar viele neue Notebook, deren Treiber mir grad Sorgen machen.

Gruß
miniversum
miniversum 16.02.2009 um 17:00:26 Uhr
Goto Top
Ändere mal Zeile 11 von
if not %aktuelleOU% equ C0.08 goto neu
in
if not "%aktuelleOU%" equ "C0.08" goto neu
Auserdem wird so die edingung nicht erfüllt sein da Deine "%aktuelleOU%" nicht "C0.08" sondern "OU=C0.08" lautet.
Daher wäre besser so:
if not "%aktuelleOU%" equ "OU=C0.08" goto neu
oder so:
if not "%aktuelleOU:~3%" equ "C0.08" goto neu
marsmars
marsmars 17.02.2009 um 09:36:25 Uhr
Goto Top
Ich habe das Problem gelöst!
Das Problem waren "=" und ".". Nach Entfernung durch folgenden Code läuft das Script.
for /f "Tokens=2 Delims=," %%i in ('\\bva.local\netlogon\set-default-printer\dsquery computer -name %computername%') do set aktuelleOU=%%i  
set Raum=%aktuelleOU:~3,2%%aktuelleOU:~6,2%
if %Raum%==C008 goto C008
if %Raum%==C007 goto C007
...

@ miniversum: Das mit den Gänsefüßchen hatte ich schon und "OU=" hatte ich wohl wieder vergessen einzufügen, da ich schon mit String verkürzen gearbeitet hatte
@ TimoBeil: Meinst du die reg datei ist notwendig?

@miniversum und TimoBeil: 1000 Danke für eure Hilfe ^^