Knowledge Base

Use of the %0\..\ Syntax in the Smsls.bat File

Article ID: 121387

Article Last Modified on 12/19/2006


APPLIES TO


This article was previously published under Q121387

SUMMARY

When programs are run from a logon script, and they are located in the NETLOGON share, the actual logon script can not determine what drive or path to execute the program from, and the NETLOGON share is not included in the MS-DOS path statement. To resolve this, Systems Management Server uses a little known feature of MS-DOS to determine the drive and path the script is running from.

MORE INFORMATION

During a log on and when the logon script is running, the Lmscript.exe program runs its commands from the NETLOGON share. However, batch files have no way of determining where they are running from, and the current directory set by Lmscript.exe is not the NETLOGON share. As a workaround, Systems Management Server uses the %0\..\ path to indicate the argv[0] present when the batch file was run. The batch file can then refer to this path and determine its own location and look for other files there.

An example of this can be found in the Slow Network detection portion of the Smsls.bat logon script file:
   REM SNET_DOS
   %0\..\netspeed
   if not errorlevel 1 goto NET_DOS
   if not errorlevel 2 goto END
   if errorlevel 2 %0\..\choice /T:Y,30 Slow network detected. Continue
   if not errorlevel 2 goto NET_DOS
   goto END
				
Prior to use of this technique, Systems Management Server was forced to use hard-coded drive Z to reference needed files. Now the drive used during a NET LOGON can be arbitrary, and dynamically determined.

Additional query words: sms prodsms login

Keywords: kbconfig kbinfo kbnetwork KB121387