pixel0815
Goto Top

Batch Skript läuft merkwürdig.

Hallo zusammen,
ich habe ein komisches Phänomen.

Dieses unten stehende Skript läuft in einer Citrix Umgebung

Dies dient dazu um die korrekte URL aufzurufen in einer Citrix Umgebung.

Dort soll nicht der Servername stehen sondern der CLIENTNAME

http://servername//login.php?host^=%PC%

Soweit so gut.

Wenn ich start %url% aufrufe ist der Link korrekt.
Wenn ich start iexplore %url% aufrufe hat die Variable den wert NB000 IF NB000 EQU Console set PC=SERVER1 und nicht wie vorher NB000
Was läuft da schief?

setlocal enabledelayedexpansion
set Clientname
IF %ERRORLEVEL% NEQ 1 goto Citrix
set PC=%COMPUTERNAME%
goto aufruf
:Citrix
IF %CLIENTNAME% NEQ Console set PC=%Clientname% IF %CLIENTNAME% EQU Console set PC=%COMPUTERNAME%
:aufruf
set URL=http://servername//login.php?host^=%PC%
start iexplore %URL%

Gruß
Pixel

Content-ID: 304214

Url: https://administrator.de/forum/batch-skript-laeuft-merkwuerdig-304214.html

Ausgedruckt am: 05.04.2025 um 02:04 Uhr

holli.zimmi
holli.zimmi 11.05.2016 um 14:19:04 Uhr
Goto Top
Hi Pixel,

ist denn eigentlich nicht besser "setx" als "set" benutzen?

Gruß

Holli
MrCount
MrCount 11.05.2016 um 14:25:10 Uhr
Goto Top
Hi,

generell würde ich mit " " arbeiten, z.B.:
set "PC=%COMPUTERNAME%"  
pixel0815
pixel0815 11.05.2016 um 14:57:08 Uhr
Goto Top
Hilft nicht. face-sad
MrCount
MrCount 11.05.2016 um 15:05:58 Uhr
Goto Top
IF %CLIENTNAME% NEQ Console set PC=%Clientname% IF %CLIENTNAME% EQU Console set PC=%COMPUTERNAME% 
sollte nicht in 1 Zeile stehen
IF %CLIENTNAME% NEQ Console set PC=%Clientname%
IF %CLIENTNAME% EQU Console set PC=%COMPUTERNAME% 

Den Sinn von
set Clientname 
verstehe ich auch nicht so ganz.
Da wird ja kein Wert zugewiesen...
Snowman25
Snowman25 11.05.2016 um 15:15:37 Uhr
Goto Top
: set Clientname : Falls Clientname bereits gesetzt ist, wird er ausgegeben. Errorlevel: 0 // Falls nicht gesetzt wird ein Fehler geworfen. Errorlevel: 1

Ist also durchaus wichtig für das nachfolgende IF.
MrCount
MrCount 11.05.2016 um 15:19:43 Uhr
Goto Top
Zitat von @Snowman25:
Ist also durchaus wichtig für das nachfolgende IF.

Danke, jetzt sehe ich es auch ^^ (bin wohl schon mit einem Bein im Urlaub...)
Hatte die Zeilen nur überflogen und nicht im "Zusammenhang" analysiert, sondern nach offensichtlichen Fehlern gesucht...
129148
129148 11.05.2016 aktualisiert um 18:32:41 Uhr
Goto Top
@echo off & setlocal enabledelayedexpansion
set Clientname && goto Citrix
set "PC=%COMPUTERNAME%"  
goto aufruf
:Citrix
IF /i "%CLIENTNAME%" == "Console" (  
   set "PC=%COMPUTERNAME%"  
) else (
    set "PC=%Clientname%"  
)
:aufruf
set "URL=http://servername/login.php?host^=!PC!"  
start "" iexplore "%URL%"  
Snowman25
Snowman25 12.05.2016 um 16:10:03 Uhr
Goto Top
Zitat von @129148:

> @echo off & setlocal enabledelayedexpansion
> set Clientname && goto Citrix
> set "PC=%COMPUTERNAME%"  
> goto aufruf
> :Citrix
> IF /i "%CLIENTNAME%" == "Console" (  
>    set "PC=%COMPUTERNAME%"  
> ) else (
>     set "PC=%Clientname%"  
> )
> :aufruf
> set "URL=http://servername/login.php?host^=!PC!"  
> start "" iexplore "%URL%"  
> 

Erklärung? Änderung?
129148
129148 12.05.2016 aktualisiert um 19:31:35 Uhr
Goto Top
Zitat von @Snowman25:
Erklärung? Änderung?
Sieht man doch wenn man zwei Augen im Kopf hat und beide nebeneinander legt. Das sind solche Basis-Befehle die man nachschlagen kann, da bedarf es keiner weiteren Erklärung mehr, oder sind wir hier im Kindergarten wo man den Kindchen den Löffel an den Mund führen muss ?
Snowman25
Snowman25 13.05.2016 um 11:17:43 Uhr
Goto Top
Zitat von @129148:

Sieht man doch wenn man zwei Augen im Kopf hat und beide nebeneinander legt. Das sind solche Basis-Befehle die man nachschlagen kann, da bedarf es keiner weiteren Erklärung mehr, oder sind wir hier im Kindergarten wo man den Kindchen den Löffel an den Mund führen muss ?

Ich hab keinen Bock, stöndig hich und runter zu scrollen, um das Skript mit dem Original zu vergleichen.
Zumindest einen Satz dazuschreiben ist ja wohl nicht zu viel verlangt.
129148
129148 13.05.2016 aktualisiert um 12:03:08 Uhr
Goto Top
@Snowman25
Naja, es fehlten einfach ne Menge Anführungszeichen und in der Zeile hier
IF %CLIENTNAME% NEQ Console set PC=%Clientname% IF %CLIENTNAME% EQU Console set PC=%COMPUTERNAME%
der Hauptfehler - werden zwei Anweisungen in einer Zeile hinter eine IF-Anweisung geschrieben, ohne das man sie getrennt hätte also abtrennen wie ich es oben gemacht habe. Sieht man eigentlich auf den ersten Blick.

Mal ehrlich Copy n'paste in zwei neben einander platzierte Editor-Fenster kann jedes Kind.
MrCount
MrCount 13.05.2016 um 11:37:04 Uhr
Goto Top
Das mit den [=304214&nid=242851#comment-1098452 IFs in einer Zeile] hatte ich ja auch schon anfangs mitgeteilt...
129148
129148 13.05.2016 aktualisiert um 11:41:59 Uhr
Goto Top
Das mit den Anführungszeichen und den beiden IFs in einer Zeile hatte ich ja auch schon anfangs mitgeteilt...
Eben, deswegen wollte ich es auch eigentlich nicht noch einmal wiederholen, aber @Snowman25 brauchte wohl eine extra Einladung.
Aber der TO hat wohl anscheinend sowieso kein Interesse mehr am Thread.
Biber
Biber 13.05.2016 aktualisiert um 11:58:03 Uhr
Goto Top
[OT]
Moin icybox, moin Snowman,

geht es euch eigentlich auch so, dass ihr euch auch so relaxed und chillig verhaltet, weil bald das lange Wochenende anfängt?

Mag ja sein, dass der Tonfall eures Dialogs in dem anderen Thread ausnahmsweise entgleist ist. Bzw. mag nicht nur sein, das ist so gewesen.

Aber bitte regelt das mit einem kurzen PN-Dialog (Beispiel "Sorry für gestern, schönes Wochenende ", Antwort "Ach was, Schwamm drüber,.Vrohe Vinxten"), aber bitte nicht offentlich über mehrere Beiträge verteilt.

Danke schon mal, wenn ihr das ohne Moderation hinbekommt
Biber
[/OT]
129148
129148 13.05.2016 aktualisiert um 12:04:50 Uhr
Goto Top
[OT] Kann er gerne tun ich habe mir nichts vorzuwerfen, scheint einfach manche User zu geben die hier auf diese Weise Ihren Frust loswerden wollen. Einfach nur unprofessionell kann man da nur sagen, und das in einem "Administrator"-Forum.[/OT]