感覺自己有一段時間沒有寫部落格了,都已經好幾天沒有開啟自己的部落格了,真的是退步了,
最近也沒怎麼學習,看看部落格第一篇文章離現在已經過去整整一年了,我要堅持下去,因為最近也沒有學習,所以還真的沒有什麼可寫的,昨天寫了幾個小指令碼,發出來分享下吧,因為我慢慢的變懶,所以反而越來越喜歡簡單的指令碼語言了。
轉載請註明出處http://blog.csdn.net/sunyujia/
1. 利用vbs設定環境變數
有時候感覺設定環境變數還真是比較麻煩,我是希望可以做成點擊一下就ok的,這樣重裝系統就不用那麼麻煩了,但是考慮到通用性,為了不把路徑寫死所以做了個選擇目錄的對話方塊,源碼如下:用記事本儲存為JavaHomeTool.vbs即可。
下面的指令碼僅僅是設定JAVA_HOME,同樣原理有了JAVA_HOME連PATH,CLASSPATH也就可以設定了,不過這裡我就不寫了,留給讀者完成吧。
- MsgBox "歡迎使用JAVA_HOME設定工具 create by sunyujia"
- '轉載請註明作者和出處 http://blog.csdn.net/sunyujia/
- Set shell = CreateObject("Shell.Application")
- Set selFolder = shell.BrowseForFolder(0, "選擇JAVA_HOME目錄 sunyujia@yahoo.cn:", 0, ssfDRIVES)
- Set selFolderItem = selFolder.Self
- selPath = selFolderItem.Path
- dim wsh
- Set wsh = WScript.CreateObject("WScript.Shell")
- wsh.Environment("system").Item("JAVA_HOME")=selPath
- MsgBox "完成設定 "+selPath
為了方便經常重裝系統的人,在放一段批處理版本的
- @ECHO OFF
- REG ADD "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" /v Path /t REG_EXPAND_SZ /d "D:/JDK5;%PATH%" /f
- @ECHO ON
- pause
使用者環境變數在HKEY_CURRENT_USER/Environment
上面是設定系統內容變數
使用者環境變數在HKEY_CURRENT_USER/Environment
其實說白了就是修改註冊表。沒什麼技術含量
重新整理註冊表和組策略的方法,在運行裡面輸入gpupdate /force或者把它寫到批處理裡面,需要的時候點一下,很方便的。不生效的話登出或者重啟下就可以了,2000,sp,2003及不同的版本在環境變數重新整理上都太不一樣,但是重啟是萬能的。
2. 使用批處理合并目前的目錄下的sql指令碼
合并目前的目錄下的sql指令檔,因為很多時候大量的sql指令檔一個一個執行很麻煩的,所以寫了這個小東東。
儲存為.bat檔案,會把目前的目錄下的.sql檔案合并成一個檔案。
- @echo off
- SET _TAGET_PATH=*.sql
- SET _FILENAME=./all.sql
- SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
- if exist "%_FILENAME%" (del "%_FILENAME%")
- setlocal EnableDelayedExpansion
- for /f "delims=" %%i in ('dir "!_TAGET_PATH!" /a-d /b !SUBDIR! ') do (
- @echo 正在與檔案%%i合并
- type "%%i" >>"!_FILENAME!"
- >>"!_FILENAME!" echo.
- )
- endlocal
- echo %_FILENAME%合并完成.
- pause>nul
3. 批處理設定CLASSPATH的兩種方法
這個就不用說了,平時寫個java小程式依賴一些jar包,有的時候可能會有很多個jar包,一個一個寫到bat檔案裡面太麻煩了,不如放個目錄下面,一起載入。
下面是兩種實現方法,我推薦第二種,因為在寫完第一種的時候,發現了些問題,
因為第一種實現方式使用了setlocal enabledelayedexpansion,而且不能在執行java前endlocal,這樣如果在一個複雜的批處理環境啟動並執行話會有問題,所以利用主程式和子程式寫了第二種方式。以前我一直使用兩個bat實現第二種方式的,昨天突然發現批處理中還有goto :eof這麼一個好東西,真的很不錯啊,因為goto :eof和setlocal enabledelayedexpansion理解起來需要些dos基礎所以這裡我就不介紹了,有興趣的朋友可以百度下這兩個命令或者查看dos文檔,最簡單的方法是在運行裡面輸入hh ntcmds.chm即可開啟cmd.exe的命令列參考手冊了,不多說了,放代碼了:
第一種利用變數延遲
- @echo off
- @rem 可以在_TAGET_PATH中指定目錄,相對目錄絕對目錄均可
- SET _TAGET_PATH=./*.jar
- SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir "!_TAGET_PATH!" /a-d /b !SUBDIR! ') do (
- ECHO %%i
- SET CLASSPATH=%%i;!CLASSPATH!
- )
- ECHO %CLASSPATH%
- @endlocal
- ECHO %CLASSPATH%
- pause>nul
第二種利用子程式
- @echo off
- @rem 可以在_TAGET_PATH中指定目錄,相對目錄絕對目錄均可
- SET _TAGET_PATH=./*.jar
- SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
- for /f "delims=" %%i in ('dir "%_TAGET_PATH%" /a-d /b %SUBDIR% ') do (
- ECHO %%i
- call :APPENDCP %%i
- )
- goto :ENDCP
- :APPENDCP
- set CLASSPATH=%1;%CLASSPATH%
- goto :eof
- :ENDCP
- ECHO %CLASSPATH%
- pause>nul
最後的ECHO %CLASSPATH%就可以看到設定好的CLASSPATH了,這裡的設定只是針對當前CMD.EXE生效的,並不是修改環境變數,和最上面的修改註冊表的方法是有區別的。
希望這篇文章也能給自己打打氣,繼續堅持寫博。