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?
jzanetteAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mbeitzCommented:
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.
0
jzanetteAuthor Commented:
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.
0
Heiko BialozytLeiter ITCommented:
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.
0
pbrydenCommented:
Place the following lines at the beginning of any script where you would like to set and use the today variable.

date/t >date.txt
For /f "tokens=2" %%i in (date.txt) do (set TODAY=%%i)

This variable will exist during the execution of the script only.

General comment:

I prefer to have the schedule service login as a user account instead of the system account (the above procedure will work either).  The system account can't map network drives, etc where a login is required.

Good Luck
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jzanetteAuthor Commented:
Thanks.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Windows Networking

From novice to tech pro — start learning today.