Předmět Autor Datum
Zkus se podívat třeba sem: faqs.cfm 1107
Jan Fiala 21.07.2007 16:51
Jan Fiala
VBS neumim, ale vejral jsem do toho a řekl bych, že to je na přidávání a odstraňování proměnných, já…
angel333 21.07.2007 18:02
angel333
třeba ovl.panely - systém - upřesnit - dole jsou proměnné prostředí... edit: aha, jsi chtěl něco ji…
lední brtník 21.07.2007 18:27
lední brtník
Jestli to mas do nejakeho bataku (CMD), tak staci na jeho zacatek skutecne dat napr. set path=%path…
Abox 21.07.2007 18:31
Abox
Potřeboval bych pro celý systém. Zjistil jsem, že se to ukládá do registrů. //update: Dělají to nap…
angel333 21.07.2007 18:51
angel333
Psal si, ze to chces pridat a odebrat. Tak jsem to pochopil, ze je to jenom pro nejaky SW docasne. N…
Abox 21.07.2007 19:07
Abox
Zeptal jsem se strejdy a cituji jeho první odkaz: Using the add-on tool Setx.exe It is not part of…
anarchist 21.07.2007 19:43
anarchist
Stejně ale musím nějak udělat přidávání ne proměnných, ale záznamů konkrétní proměnné, oddělených st… poslední
angel333 21.07.2007 23:49
angel333

VBS neumim, ale vejral jsem do toho a řekl bych, že to je na přidávání a odstraňování proměnných, já bych potřeboval jenom přidat na konec ";c:\bin" a potom ho zase vymazat.

Asi už jsem zjistil, jak se přidává, jak prosté

set path=%path%;c:\bin

Předtim mě vyděsil

set /?

, tak jsem se matlal s nějakym

set %PATH:=c:\bin%

což stejně nešlo, protože to je jakýsi nahrazování.

Vymazání cesty jsem ale nenašel.

Nicméně jsem to zkombinoval a napsal jsem si ve VBScriptu něco jako přidávač/odebírač - funguje to, chtělo by to rozhodně vylepšit, ale zatim to tak nechám, na moje účely to stačí.

Set WshShell = WScript.CreateObject("WScript.Shell")
path = WshShell.Environment("SYSTEM").Item("PATH")
phrase = "c:\bin"

set WshShell = CreateObject("WScript.Shell")

'Pridat
'WshShell.Environment("System").Item("PATH") = path&";"&phrase

'Odebrat
'WshShell.Environment("System").Item("PATH") = Replace(path,";"&phrase,"")

Jestli to mas do nejakeho bataku (CMD), tak staci na jeho zacatek skutecne dat napr.

set path=%path%;nova_cesta
tady neco spustis
....
....

a po ukonceni toho bataku (CMD) budou ty cesty stejne tak, jak byly na zacatku.
Tu cestu menis pouze v ramci toho jednoho procesu.

Zeptal jsem se strejdy a cituji jeho první odkaz:

Using the add-on tool Setx.exe
It is not part of the standard Windows XP setup but a command-line tool called setx.exe is included in the Windows XP Service Pack 2 Support Tools. This tool extends the set command so that permanent changes in the environment variables can be made. For example, to add a folder C:\New Folder to the path, the command would be
setx path "%PATH%;C:\New Folder"

Scripts for Listing Environment Variables
The "Set" command can be used in a command prompt together with a redirection to a text file to make a list of the current environment variables. The command might be
set > C:\env_list.txt file
The file name "C:\env_list.txt" can be replaced by any of your choice.

Microsoft also has a VBScript that lists environment variables on this page.

Registry Keys for Environment Variables
For those who are experienced with editing the Registry, there is another way to make changes in environment variables. User environment variables are stored in the Registry in the key

HKEY_CURRENT_USER\Environment

System variables are found in the key

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Cont rol\Session Manager\Environment

Note that any environment variable that is in the form that needs to be expanded (for example, %PATH%) must be stored in the registry as a REG_EXPAND_SZ registry value. Editing the Registry is primarily for scripts used by systems administrators and is not recommended for the average PC user.

Stejně ale musím nějak udělat přidávání ne proměnných, ale záznamů konkrétní proměnné, oddělených středníkem (%PATH%). To dělají některé instalátory, které potřebují, aby nainstalované binárky/skripty byly spustitelné z konzole, nebo pomocí [Okno]+[R]. Myslel jsem, že něco podobného se dá ve Windows nějak pohodlně řešit. Představoval jsem si třeba nějak takto:

setx /x path "c:\bin"

Nebo v tom VBS:

Trida.Trida.Environment.Item("Path").Add("c:\bin")

(VBS neznám, tohle je jen pro ilustraci, možná je to syntakticky špatně)

Nejspíš to bude asi jenom v installerech. Nicméně ten skriptík, co jsem si napsal, funguje. Blbý je, že teoreticky, kdyby

PATH = %windir%;%sysdir%;c:\bin;c:\binX

a já bych chtěl pomocí skriptu vymazat c:\bin, vymazalo by se mi i c:\binX. Další věc je, že kdyby

PATH = c:\bin;%windir%;%sysdir%

a opět bych chtěl c:\bin vymazat, nenašlo by ho to. No, neva, vím, že asi není správný takle uvažovat, ale pravděpodobnost, že se to stane, je malá :-).

Zpět do poradny Odpovědět na původní otázku Nahoru