Setel variabel lingkungan setx

0

Saya menetapkan variabel lingkungan dengan setx (win7) dalam cmd, yang saya mulai dari file batch, jika saya menutup shell dan membuka yang baru dari file batch lagi dan menggunakan perintah Set untuk memeriksanya, saya tidak mendapatkan ini baru variabel. Saya bisa melihat variabel melalui windows dan regedit, ada yang punya ide apa yang saya lakukan salah?

EG.

Batch:

Rem mengatur beberapa variabel lokal

Set varableA = "test"

...

Mulai / B cmd.exe / k

Di shell yang terbuka:

Nilai setx -m variabelB -> set sistem envirtomet vartiable

Tutup shell batch yang dijalankan lagi

Di shell baru:

Setel var

Dan thgerre bukan variabelB tetapi dalam Windows sebuah registri saya bisa melihatnya

Gasasa
sumber
-1 Anda harus menempelkan perintah yang Anda gunakan agar orang dapat mengulangi apa yang Anda lakukan. Itulah kesalahan nomor satu yang Anda lakukan, adalah cara Anda mengajukan pertanyaan ini.
barlop
sekarang Anda telah menunjukkan apa yang Anda lakukan, saya telah menghapus -1. Saya dapat melihat satu hal yang salah di sana. Dengan setx dan -m, -m harus berada di akhir.
barlop
@barlop hmm baru saja diuji di win7 the -m tampaknya bekerja bahkan ketika tidak di akhir
barlop

Jawaban:

2

Bahkan jika sekarang Anda tahu kesalahan Anda. Anda harus tetap mengatakannya dalam pertanyaan Anda. Pertanyaan Anda sangat ditanyakan karena Anda bertanya mengapa apa yang Anda lakukan tidak berhasil dan Anda tidak menunjukkan apa yang Anda lakukan. Rekatkan perintah yang Anda lakukan.

Inilah cara seseorang menggunakan setx. Ini bekerja.

C:\>setx aaa rrr

SUCCESS: Specified value was saved.

Berikut ini adalah bukti bahwa itu mengatur-

C:\>@REG QUERY "HKCU\Environment"


HKEY_CURRENT_USER\Environment
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    aaa    REG_SZ    rrr

sekarang jika Anda menyetel (perintah untuk melihat variabel lingkungan), nilainya tidak akan muncul. Tapi buka jendela cmd baru dan lakukan set, dan itu menunjukkan. Itu ada di bagian variabel pengguna env. daripada satu sistem.

Untuk variabel lingkungan sistem, Anda perlu setx aaa 123 -m(yaitu -m di akhir), dan lokasi di registri untuk variabel sistem, dalam xp atau 7, akan menjadi HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment dan Anda akan memerlukan cmd prompt dalam administrasi. Dan hati-hati dengan jalan Anda harus mendukungnyasetx pathbk "%path%" -m

Saya sarankan menulis file batch untuk secara permanen mengatur% uvar% dan% mvar% untuk menunjuk ke lokasi registri untuk variabel lingkungan

set mvar = HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment

setx mvar "% mvar%"

set uvar = HKCU \ Environment

setx uvar "% uvar%"

maka kamu bisa melakukannya

reg permintaan% uvar%

reg permintaan% mvar%

Note-setx bisa sedikit berbahaya, menulis sesuatu yang tidak Anda inginkan, jadi setel> aa terlebih dahulu sehingga Anda memiliki cadangan.

terkait

https://stackoverflow.com/questions/1472722/how-to-remove-an-environment-variable-from-the-system-configuration-with-a-batch

barlop
sumber
Saya kira itu mungkin merupakan kebiasaan yang masuk akal untuk menempatkan nilai dalam tanda kutip terlepas - tanda kutip tidak akan masuk dalam registri sehingga tidak akan ditampilkan ketika melakukan set yang baik. Dan itu berfungsi ketika benda mengandung spasi. Kutipan hanya akan untuk tempat nilai ditulis menggunakan setx dan setx (atau pustaka C yang digunakan oleh setx), akan menghapusnya. Jadi itu hanya setx yang tahu itu bukan parameter lagi. Saya kira kemudian setx menggunakan argsv daripada getcommandline. Di windows jika digunakan getcommandline, ia akan mendapatkan kuotasi dan membiarkannya masuk. Ketahuilah bahwa Anda hampir tidak pernah ingin kuotasi disimpan dalam nilai.
barlop
Saya belum pernah melihat kasus praktis yang menginginkan kuotasi dalam nilai, dan di jalan yang mereka bahkan dapat merusak. Anehnya jika variabel environmentem berisi spasi maka setx menempatkan tanda kutip di sekitar nilai, itu mungkin bug, meskipun 'untungnya' orang jarang memiliki kasus variabel lingkungan dengan spasi. Dan Anda selalu dapat memperbaiki hal-hal tanpa setx, jika setx salah.
barlop