volatile variable

Oct 18, 2008
271
1
#1
Hello - I am not sure if this is an error -- if not I would apprecaite some
advice on how to get it to work


I start tcmd, which in turn start tcc. I have a tcstart.cmd file, and one of
the items in the file is to set a volatile variable, ie


set /e /v foo=1


I then have code in the tcstart.cmd file to check to see if "foo" variable
exists and has been set. What I am seeing is that when I create a new tcc tab,
it does not see to be picking up that foo has been set -- is this the way this
is supposed to work? Thanks for any help
 

rconn

Administrator
Staff member
May 14, 2008
10,533
94
#2
I start tcmd, which in turn start tcc. I have a tcstart.cmd file, and one of
the items in the file is to set a volatile variable, ie

set /e /v foo=1

I then have code in the tcstart.cmd file to check to see if "foo" variable
exists and has been set. What I am seeing is that when I create a new tcc tab, it does not see to be picking up that foo has been sethelp
Not reproducible here. I'd have to see your TCSTART.CMD file to debug it any further. (Are you sure the new TCC is executing your TCSTART?)

You can check the volatile registry entries by starting regedit and looking at HKCU\Volatile Environment.
 
May 31, 2008
382
2
#3
I don't know what it could be. I use volatile variables in my boot scripts and they work just fine. However, YMMV depending on the version of Windows you're using - especially old versions.
Are you setting foo from a regular Windows GUI session or from a remote CLI session? I found that SET /V foo=1 doesn't work in the latter case. My (quite old) notes say:
:: This script uses SET /V (volatile environment) which returns an error
:: when the user isn't logged into a Windows GUI session.
:: If the user is logging in from a remote CLI session, and the same login
:: is already activated in a Windows GUI, SET /V works; it returns errors
:: if the user is connecting exclusively from a remote CLI session.
 
#4
I see something peculiar:

Code:
v:\> set /v foo
TCC: Not in environment "foo"

v:\> set /v foo=1

v:\> set /v foo
1

v:\> unset /v foo
TCC: Not in environment "foo"
It's the same with /u

Code:
v:\> set /u foo
TCC: Not in environment "foo"

v:\> set /u foo=1

v:\> set /u foo
1

v:\> unset /u foo
TCC: Not in environment "foo"
The registry variables **do** exist.
 
#5
That was Win7. The same thing happens in XP. And

Code:
v:\> which set
set is an internal command
On Thu, 15 Sep 2011 11:16:15 -0400, vefatica <> wrote:

|I see something peculiar:
|
|
|Code:
|---------
|v:\> set /v foo
|TCC: Not in environment "foo"
|
|v:\> set /v foo=1
|
|v:\> set /v foo
|1
|
|v:\> unset /v foo
|TCC: Not in environment "foo"
|---------
|It's the same with /u
|
|
|Code:
|---------
|v:\> set /u foo
|TCC: Not in environment "foo"
|
|v:\> set /u foo=1
|
|v:\> set /u foo
|1
|
|v:\> unset /u foo
|TCC: Not in environment "foo"
|---------
|The registry variables **do** exist.
 
Oct 18, 2008
271
1
#6
Not reproducible here. I'd have to see your TCSTART.CMD file to debug it any further. (Are you sure the new TCC is executing your TCSTART?)

You can check the volatile registry entries by starting regedit and looking at HKCU\Volatile Environment.
Hello --

Thanks for the reply -- I don't know if it matters, but the OS is xp (with all fixes and sp's) 32 bit -- Since I could not get it to work, I deleted the code and used a file in the %temp dir as an alternative -- What I do remember about the exact code is that the "set" command was not in the tcstart (the tcstart file is tcstart.cmd) file, but a file called profile.btm that it called