下面是我之前整理過的三段vbs代碼,他們的主要都是用於快速設定Windows系統變數的。這些代碼,在使用的過程中,都做了很多修改,已經記不清最初從哪裡學來的了。
第一段:
Set WshShell=CreateObject("WScript.Shell")
Set WshEnv=WshShell.Environment("User")
'WScript.Echo(WshShell.currentdirectory&"\Python27")
WshEnv.Item("Path") = WshEnv.Item("Path")&";"&WshShell.currentdirectory&"\Python27;"
WScript.Echo(WshEnv.Item("Path"))
這個代碼用於添加目前的目錄下的Python27目錄到(使用者)系統變數Path上。最初的用途是,把Python27安裝目錄、Editplus(經過一些配置)和這個vbs打包,可以用於快速搭建Python的開發環境,其中Editplus是編輯器,Python是解譯器,Editplus經過了一些設定有代碼高亮、自動所經等功能(代碼自動補全由於做得不怎麼好,被我放棄了),可以通過快速鍵方便運行Python代碼。這幾樣東西加起來用7z壓縮,還不到9M。當初學Python的時候,這個工具包是隨身攜帶,隨時可用的。
第二段:
curdir = createobject("Scripting.FileSystemObject").GetFolder(".").Path
regpath="HKEY_CURRENT_USER\Environment\"
set ws=wscript.createobject("wscript.shell")
temp=ws.regwrite(regpath & "LM_LICENSE_FILE",curdir&"\license.dat")
這段代碼用於添加使用者系統變數的一個項LM_LICENSE_FILE,值為目前的目錄下的license.dat的完整路徑,這其實是用於Modelsim的破解的。上學期學習Verilog,需要使用Modelsim。經過研究,Modelsim是用Tcl寫的介面,軟體本身有綠色軟體的性質。我把一些安裝時產生的文檔,和VHDL等其他語言的樣本和庫檔案等刪除,配合破解程式和這段vbs指令碼,完成了一個快速可用的Modelsim+Verilog開發套件,壓縮包只有19M,解壓之後,幾個點擊和雙擊就可以使用了,比超大的原始安裝程式的安裝要快和輕便了很多。
第三段:
curdir = createobject("Scripting.FileSystemObject").GetFolder(".").Path
regpath="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"
set ws=wscript.createobject("wscript.shell")
temp=ws.regwrite(regpath & "JAVA_HOME",curdir)
temp=ws.regwrite(regpath & "CLASSPATH",".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar")
oldpath=ws.regread(regpath & "PATH")
newpath=oldpath & ";%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin"
ws.Environment("system").Item("PATH")=newpath
temp=ws.regread(regpath & "PATH")
wscript.echo "ok"
這段代碼是用於配置Jdk的,雙擊之後,可以立即完成PATH、CLASSPATH等系統變數的設定,比從系統屬性上要快很多。當然也可以和上面的代碼一樣完成“綠色版”JDK工具包。這段代碼在Windows XP上沒有什麼問題,似乎在Windows 7下需要修改一下。
第三段代碼最值得品味的一行是
temp=ws.regread(regpath & "PATH")
這行看似沒有什麼用處,其實不然。vbs通過WScript.Shell對象設定系統變數,但是只有修改和刪除的直接方法,修改就是用等號賦值,刪除使用remove方法,而增加系統變數的直接方法,微軟沒有提供,在一些文檔上也是這麼說的。於是想添加系統變數,就得另闢蹊徑,操作註冊表,vbs可以操作註冊表,但是單單寫登錄機碼並不能立即生效,只有在重新登入後才有用,使用讀註冊表regread,似乎就是為瞭解決這個問題。上面的第二段代碼也沒有注意到這個問題。