Logo

dev-resources.site

for different kinds of informations.

SetEnv 工具程式

Published at
1/31/2024
Categories
cmd
bat
Author
codemee
Categories
2 categories in total
cmd
open
bat
open
Author
7 person written this
codemee
open
SetEnv 工具程式

Windows 的 cmd 下雖然有提供 setx 指令可以修改系統的環境變數, 但是它有一個要命的限制, 就是設定的值不能超過 1024 個字元, 這對一般的環境變數沒有差, 可是當你要設定 PATH 的時候, 就很容易超過限制。更糟的是超過限制時, 它會自動截掉超過的部分後儲存到環境變數中。

為了解決這個問題, 有善心人士寫了一個工具程式 SetEnv, 以下我們就來說明它的用法。

安裝 SetEnv

SetEnv 可以下載安裝檔或是原始碼壓縮檔, 由於它是單獨的一個 exe 檔, 所以比較建議的方式就是下載原始碼壓所檔, 從解開的 Visual Studio C++ 專案的 Release 資料夾中取出 setenv.exe 放到 c:\Windows 或任何 PATH 指定的路徑下即可。

以下指令可查看使用方法:

>setenv /?

SetEnv - Version 1.08 - Copyright (C) 2005-2007 - Jonathan Wilkes

Allows you to set/update/delete User or System Environment Variables, e.g. PATH.
For Windows 9x/NT/2000/XP/S2K3/Vista

Usage: SetEnv -<options> <name> <value>

Options (Default is System variable, add -u for User):
        SetEnv -a name value            Set the variable to the specified value
        SetEnv -a name %value           Add a value to an expanded variable
        SetEnv -ap name %value          Prepend a value to an expanded variable
        SetEnv -d name                  Delete the variable
        SetEnv -d name %value           Delete the value from the expanded variable
        SetEnv -ua name                 Add a USER environment variable
        SetEnv -ud name                 Deletes a USER environment variable
        SetEnv -e                       Show examples of using SetEnv

Return Values:
        0               Success
        5               Access Denied
        1               Other Error (Error messages go to stderr)

Notes:
        If you want to create an expanded variable with multiple values, e.g. PATH
        specify the value with a preceeding '%' character, e.g. SetEnv PATH %d:\Bin

        Use double quotes around any value which contains spaces.
Enter fullscreen mode Exit fullscreen mode

操作使用者的環境變數

設定環境變數:

>setenv -ua MEE_HOME c:\mee
Enter fullscreen mode Exit fullscreen mode

重啟 cmd 後可以看到環境變數的新值:

>echo %MEE_HOME%
c:\mee
Enter fullscreen mode Exit fullscreen mode

使用百分比符號可以在既有的環境變數後面添加內容:

>setenv -ua MEE_HOME %c:\temp
Enter fullscreen mode Exit fullscreen mode

重啟 cmd 後可以看到它會自動幫你加上分隔的分號, 然後將內容加在最後面:

>echo %MEE_HOME%
c:\mee;c:\temp
Enter fullscreen mode Exit fullscreen mode

這種以分號分隔項目的環境變數 setenv 稱為展開 (expanded) 的環境變數, 你也可以從展開的環境變數中刪除指定項目:

>setenv -ud MEE_HOME %c:\temp
Enter fullscreen mode Exit fullscreen mode

重啟後就會發現只剩下單一項目:

>echo %MEE_HOME%
c:\mee;
Enter fullscreen mode Exit fullscreen mode

你也可以把項目新增到環境變數的開頭:

>setenv -uap MEE_HOME %c:\code
Enter fullscreen mode Exit fullscreen mode

重啟後就可以看到新增的項目:

>echo %MEE_HOME%
c:\code;c:\mee;
Enter fullscreen mode Exit fullscreen mode

如果要刪除環境變數:

>setenv -ud MEE_HOME
Enter fullscreen mode Exit fullscreen mode

重啟後可以看到環境變數已經被刪除了:

>echo %MEE_HOME%
%MEE_HOME%
Enter fullscreen mode Exit fullscreen mode

你也可以嵌入其它環境變數到設定值內, 但要注意使用的是 "~" 而不是 "%":

>setenv -ua CODE c:\code

>setenv -ua PYTHON ~CODE~\python
Enter fullscreen mode Exit fullscreen mode

重啟後可以看到生效:

>echo %PYTHON%
c:\code\python
Enter fullscreen mode Exit fullscreen mode

注意到這個嵌入是動態的, 如果你變更 CODE 的值:

>setenv -ua CODE d:\code
Enter fullscreen mode Exit fullscreen mode

重啟 cmd 後就會發現值也會跟著變化:

>echo %PYTHON%
d:\code\python
Enter fullscreen mode Exit fullscreen mode

操作系統環境變數

要操作系統環境變數必須要以管理員身分啟動 cmd, 在 Windows Terminal 中可以按住 Alt 後再 + 上按滑鼠左鍵, 就可以管理員身分開啟新的 Windows Terminal。大部分的操作都跟使用者的環境變數類似, 只是選項中少掉了 'u' 而已。

設定環境變數值:

>setenv -a MEE_HOME c:\mee
Enter fullscreen mode Exit fullscreen mode

重啟查看結果:

>echo %MEE_HOME%
c:\mee
Enter fullscreen mode Exit fullscreen mode

新增項目到展開的環境變數尾端:

>setenv -a MEE_HOME %c:\temp
Enter fullscreen mode Exit fullscreen mode

重啟可看到結果:

>echo %MEE_HOME%
c:\mee;c:\temp
Enter fullscreen mode Exit fullscreen mode

當然也可以新增項目到展開的環境變數的開頭:

>setenv -ap MEE_HOME %c:\windows
Enter fullscreen mode Exit fullscreen mode

重啟可以看到結果, 一樣會幫你加上分隔的分號:

>echo %MEE_HOME%
c:\windows;c:\mee;c:\temp
Enter fullscreen mode Exit fullscreen mode

你也可以刪除展開的環境變數裡指定的項目:

>setenv -d MEE_HOME %c:\temp
Enter fullscreen mode Exit fullscreen mode

重啟後就會發現結尾處的 "c:\temp" 被刪除了:

>echo %MEE_HOME%
c:\windows;c:\mee;
Enter fullscreen mode Exit fullscreen mode

以下則會刪除開頭端的 "c:\windows":

>setenv -d %c:\windows
Enter fullscreen mode Exit fullscreen mode

重啟後的確看到刪除後的結果:

>echo %MEE_HOME%
c:\mee;
Enter fullscreen mode Exit fullscreen mode

另外, 它也會幫你檢查重複的內容:

>setenv -a MEE_HOME %c:\temp
>setenv -ap MEE_HOME %c:\temp
Enter fullscreen mode Exit fullscreen mode

重啟後會看到重複的內容並不會重複加入:

>echo %MEE_HOME%
c:\mee;c:\temp
Enter fullscreen mode Exit fullscreen mode

一樣可以刪除環境變數:

>setenv -d MEE_HOME
Enter fullscreen mode Exit fullscreen mode

重啟後可確認的確被刪除了:

>echo %MEE_HOME%
%MEE_HOME%
Enter fullscreen mode Exit fullscreen mode

結語

有了 SetEnv 工具程式, 就不需要使用如下的方式修改 PATH:

setx %PATH%;c:\code
Enter fullscreen mode Exit fullscreen mode

可避免路徑過長超過 1024 個字元的問題, 而是改用:

setenv -ua PATH %c:\code
Enter fullscreen mode Exit fullscreen mode

或是

setenv -a PATH %c:\code
Enter fullscreen mode Exit fullscreen mode

將新的路徑加到使用者或系統的 PATH 環境變數尾端, 完全沒有字數限制的問題。

cmd Article's
30 articles in total
Favicon
Windows 上 VSCode 的 C/C++ 延伸模組處理編碼的問題
Favicon
TryHackMe | Windows Command Line | RSCyberTech
Favicon
50+ Most Useful CMD Commands to Boost Your Windows Productivity
Favicon
Video: Enable IIS using CMD and PowerShell
Favicon
Video: List All Available Windows Features on Windows 11 using CMD & PowerShell
Favicon
🚀 Arch Linux Cheat Sheet: Essential Commands for new Users
Favicon
RIME Input | curl: (6) Could not resolve host: raw.githubusercontent.com
Favicon
Rename Multiple Files in Sequence with Just One Click Using PowerShell in Windows! 🚀
Favicon
Maximizing IT Service Excellence with ServiceNow CMDB
Favicon
🍑understanding windows Command Line Interface
Favicon
Comandos Avanzados
Favicon
Comandos de Red
Favicon
Comandos de Fecha
Favicon
Comandos para Manipular Archivos y Directorios
Favicon
Tech notes 02 - Most Important Command Line Notes
Favicon
Comandos Básicos
Favicon
Bash Scripting Fundamentals
Favicon
Decoding the Linux Command Line: 75 Indispensable Utilities Explained
Favicon
How to restore a Mysql backup with XAMP
Favicon
Remotely Control Raspberry Pi via SSH from External Network
Favicon
SSH Raspberry Pi via Cell Phone
Favicon
Enhancing Internet Speed Through CMD Commands
Favicon
Install Oh-My-Posh On Windows Command Prompt (cmd) Via Clink
Favicon
Important CMD Commands
Favicon
Title: A Beginner's Guide to Command-Line File and Directory Manipulation
Favicon
Mastering Deployments in Kubernetes
Favicon
SetEnv 工具程式
Favicon
My K8s Cheatsheet
Favicon
Membuat Database Melalui CMD Pada Laragon
Favicon
Perbedaan perintah RUN dan CMD di dalam Docker

Featured ones: