Java程式員所需的批處理和VBS指令碼

來源:互聯網
上載者:User

感覺自己有一段時間沒有寫部落格了,都已經好幾天沒有開啟自己的部落格了,真的是退步了,
最近也沒怎麼學習,看看部落格第一篇文章離現在已經過去整整一年了,我要堅持下去,因為最近也沒有學習,所以還真的沒有什麼可寫的,昨天寫了幾個小指令碼,發出來分享下吧,因為我慢慢的變懶,所以反而越來越喜歡簡單的指令碼語言了。
轉載請註明出處http://blog.csdn.net/sunyujia/
1. 利用vbs設定環境變數
有時候感覺設定環境變數還真是比較麻煩,我是希望可以做成點擊一下就ok的,這樣重裝系統就不用那麼麻煩了,但是考慮到通用性,為了不把路徑寫死所以做了個選擇目錄的對話方塊,源碼如下:用記事本儲存為JavaHomeTool.vbs即可。
下面的指令碼僅僅是設定JAVA_HOME,同樣原理有了JAVA_HOME連PATH,CLASSPATH也就可以設定了,不過這裡我就不寫了,留給讀者完成吧。

  1. MsgBox "歡迎使用JAVA_HOME設定工具 create by sunyujia"
  2. '轉載請註明作者和出處 http://blog.csdn.net/sunyujia/ 
  3. Set shell = CreateObject("Shell.Application")  
  4. Set selFolder = shell.BrowseForFolder(0, "選擇JAVA_HOME目錄 sunyujia@yahoo.cn:", 0, ssfDRIVES)  
  5. Set selFolderItem = selFolder.Self  
  6. selPath = selFolderItem.Path
  7. dim wsh
  8. Set wsh = WScript.CreateObject("WScript.Shell")
  9. wsh.Environment("system").Item("JAVA_HOME")=selPath
  10. MsgBox "完成設定 "+selPath 

為了方便經常重裝系統的人,在放一段批處理版本的

  1. @ECHO OFF
  2. REG ADD "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" /v Path /t REG_EXPAND_SZ /d "D:/JDK5;%PATH%" /f
  3. @ECHO ON
  4. pause

使用者環境變數在HKEY_CURRENT_USER/Environment

上面是設定系統內容變數
使用者環境變數在HKEY_CURRENT_USER/Environment
其實說白了就是修改註冊表。沒什麼技術含量
重新整理註冊表和組策略的方法,在運行裡面輸入gpupdate /force或者把它寫到批處理裡面,需要的時候點一下,很方便的。不生效的話登出或者重啟下就可以了,2000,sp,2003及不同的版本在環境變數重新整理上都太不一樣,但是重啟是萬能的。
2. 使用批處理合并目前的目錄下的sql指令碼
合并目前的目錄下的sql指令檔,因為很多時候大量的sql指令檔一個一個執行很麻煩的,所以寫了這個小東東。
儲存為.bat檔案,會把目前的目錄下的.sql檔案合并成一個檔案。

  1. @echo off
  2. SET _TAGET_PATH=*.sql
  3. SET _FILENAME=./all.sql
  4. SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
  5. if exist "%_FILENAME%" (del "%_FILENAME%")
  6. setlocal EnableDelayedExpansion
  7. for /f "delims=" %%i in ('dir "!_TAGET_PATH!" /a-d /b !SUBDIR! ') do (
  8.     @echo 正在與檔案%%i合并
  9.     type "%%i" >>"!_FILENAME!"
  10.     >>"!_FILENAME!" echo. 
  11. )
  12. endlocal
  13. echo %_FILENAME%合并完成.
  14. 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的命令列參考手冊了,不多說了,放代碼了:

第一種利用變數延遲

  1. @echo off
  2. @rem 可以在_TAGET_PATH中指定目錄,相對目錄絕對目錄均可
  3. SET _TAGET_PATH=./*.jar
  4. SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir "!_TAGET_PATH!" /a-d /b !SUBDIR! ') do (
  7.     ECHO %%i
  8.     SET CLASSPATH=%%i;!CLASSPATH!
  9. )
  10. ECHO %CLASSPATH%
  11. @endlocal
  12. ECHO %CLASSPATH%
  13. pause>nul

第二種利用子程式

  1. @echo off
  2. @rem 可以在_TAGET_PATH中指定目錄,相對目錄絕對目錄均可
  3. SET _TAGET_PATH=./*.jar
  4. SET SUBDIR=/s&&rem 刪除此行不遍曆子目錄
  5. for /f "delims=" %%i in ('dir "%_TAGET_PATH%" /a-d /b %SUBDIR% ') do (
  6.     ECHO %%i
  7.     call :APPENDCP %%i
  8. )
  9. goto :ENDCP
  10. :APPENDCP
  11. set CLASSPATH=%1;%CLASSPATH%
  12. goto :eof
  13. :ENDCP 
  14. ECHO %CLASSPATH%
  15. pause>nul

最後的ECHO %CLASSPATH%就可以看到設定好的CLASSPATH了,這裡的設定只是針對當前CMD.EXE生效的,並不是修改環境變數,和最上面的修改註冊表的方法是有區別的。

 

希望這篇文章也能給自己打打氣,繼續堅持寫博。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.