2017年7月20日 星期四

CMD 批次檔 環境變數 長度太長 無法新增

CMD 批次檔 環境變數太長超過 1024 怎麼辦

換個工具吧QuQ,這個真的很惱人。不過還好這個工具從Win7開始就有了不用太擔心支援性。
除非長度限制之外還有一個很討人厭的是,我一直找不到可查看使用者變數的方法,終於讓我找到了,這個指令可以查看使用者的環境變數!
你可以透過cmd 輸入 powershell 啟動,如果不想離開 cmd 就在命令前加上 powershell。比如新命令 Get-Command 則輸入 powershell Get-Command。然後有 " 前要加斜線。
powershell的批次檔結尾是.ps1

環境變數設置與查看

這兩個函式可以用來區別使用者變數與系統變數
你也可以簡化他們為”User”, “Machine”,稍後會看到。

查看環境變數

[environment]::GetEnvironmentVariable("PATH", "User")
[environment]::GetEnvironmentVariable("PATH", "Machine")
還有一個比較簡單的方法
$env:path

設置環境變數

警告,記得先儲存自己的環境變數!儲存方法如下,幫你存到桌面。
cd ~;[environment]::GetEnvironmentVariable("PATH", "User") > Desktop/PATH_User.txt
cd ~;[environment]::GetEnvironmentVariable("PATH", "Machine") > Desktop/PATH_Machine.txt
設置環境變數
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:bin", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:bin", "Machine")
這個黑科技可以擺脫2048限制了,不過環境變數還是有總長度限制,能省則省。
還有一點就是,他終於有防呆了!不會新增重複的,自動避免新增一樣的環境變數。


cmd批次檔寫法如下

@Echo Off
Title AddPath - By:Charlotte.HonG
:: Date :2016/05/28
:: Final :2017/07/20

::===========================================================
::確認是否為管理員權限
call :IsAdmin
set appPATH=%~dp0bin
powershell [System.Environment]::SetEnvironmentVariable(\"PATH\", $Env:Path + \";%appPATH%;\", \"Machine\")
::===========================================================
Exit

:IsAdmin
@Echo Off
Reg.exe query "HKU\S-1-5-19\Environment"
If Not %ERRORLEVEL% EQU 0 (
  Cls
  Echo [權限不足] 需使用管理員權限開啟
  Pause & Exit
)
goto:eof


參考

沒有留言:

張貼留言