Link to home
Start Free TrialLog in
Avatar of jzanette
jzanette

asked on

Setting an environment variable in NT using Kix32

I am using the Kix32 scripting language (comes with the NT Resource Kit) to set an environment variable in NT to today's date.  The script will be run automatically by the Scheduler Service at 12:01am every day to allow the variable %today% to be used in various ways by other command scripts, batch files, etc. throughout the day.

There are three different commands to do this in Kix32.  The variables are set in Current Environment (SET), Local User (SETL) and Local Machine (SETM).

I cannot get the variable to be seen in a Command Prompt started by the scheduler service.  Even when I schedule an interactive command prompt (using CMD.EXE /K) and then manually run the script in that window, the variable will not show up in the current window.  It will also not show up in any subsequently started "CMD.EXE /K" windows started by the Scheduler service.  It will show up in the System Properties/Environment window under System Variables and User Variables and it will show up in any new Command Prompt windows started from the Start Menu.

My questions are these:

1.  Is there a way to have the local system account (the one required to be used by the Scheduler Service for interactive jobs) read the current system variables if you have changed them since bootup?  If not, is there a registry area that can be modified to make this happen?

2.  Does anyone have another suggestion as to a method of setting environment variables in NT Scheduler command prompt windows?

3.  Is there a way to auto-update other already open windows with the new environment variables when you set them?

4.  Does anyone know of additional references for Kix32 on the Internet or elsewhere?
Avatar of mbeitz
mbeitz

Logon with the service account of the scheduler service and configure your environment variables. Then they should be there, if you restart the scheduler service.

Environments are user specific.
Avatar of jzanette

ASKER

Mbeitz is not correct.  Setting environment variables while logged in to the user account of the scheduler service works only if you actually LOG IN as that user and open a command prompt.  Then you will see the variables you have set.

When the scheduler service logs in and runs a command prompt (i.e., "at 10:00 /interactive cmd /k", variables that you have set for that user DO NOT appear in the command prompt window.  Also, even though global system variables do appear, any changes that have been made since the last reboot do not.  The only way that I have found to get global system variable changes to appear in the scheduler service command prompt window is to reboot.  Restarting the scheduler service does not work either.

That's why I am thinking there is a registry area or somewhere in system memory that the environment for the scheduler service is being stored.  It appears to only get updated at bootup.

Once more, my specific problem is:

I need to set an environment variable called "today" to mmddyy for use in some very extensive command scripts that run every day but need to find, place and rename files based on date.

C'mon experts, help me.  It's worth 250 points now.
why you dont calculating entire environment each time starting your script? with perl (from NTRESKIT) and its subset of time functions you can set necessary environment.

please ask for more detailed informations.
ASKER CERTIFIED SOLUTION
Avatar of pbryden
pbryden

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks.