• Java程序员所需的批处理和VBS脚本 (转载)


     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生效的,并不是修改环境变量,和最上面的修改注册表的方法是有区别的。

    出处http://blog.csdn.net/sunyujia/

  • 相关阅读:
    apache域名跳转
    apache配置防盗链
    apache配置静态缓存
    apache通过rewrite限制某个目录
    apache不记录指定类型的访问日志
    apache访问日志
    apache用户认证
    apache访问控制
    apache禁止默认虚拟主机
    mysql主从复制架构配置
  • 原文地址:https://www.cnblogs.com/zhang747725388/p/2251468.html
Copyright © 2020-2023  润新知