Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530152
  • 博文数量: 135
  • 博客积分: 3568
  • 博客等级: 中校
  • 技术积分: 1942
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-19 17:52
文章分类

全部博文(135)

文章存档

2012年(29)

2011年(41)

2010年(26)

2009年(12)

2008年(9)

2007年(12)

2006年(6)

分类: WINDOWS

2009-07-31 19:54:27


将常用的 Bat 做个小结!

PostGreSQL 数据库表到表的备份


点击(此处)折叠或打开

  1. @ECHO OFF
  2. REM 请先检查 %APPDATA%\postgresql\pgpass.conf 中是否已经保存了密码,否则会提示输入密码
  3. REM 参考: http://www.postgresql.org/docs/9.1/static/backup.html
  4. REM 参考: http://www.postgresql.org/docs/9.1/static/libpq-pgpass.html

  5. SET SRC_HOST=192.168.0.200
  6. SET SRC_USER=user1
  7. SET SRC_DB=user1

  8. SET DEST_HOST=192.168.0.100
  9. SET DEST_USER=user1
  10. SET DEST_DB=user1

  11. SET LOG_FILE=error.log


  12. ECHO %DATE%>%LOG_FILE%

  13. SET TABLE=xxxxxxxxx
  14. ECHO|SET /p=备份 XXXXX表
  15. ECHO 备份 XXXXX表>> %LOG_FILE%
  16. pg_dump -c -t %TABLE% -h %SRC_HOST% -U %SRC_USER% %SRC_DB% | psql -h %DEST_HOST% -d %DEST_DB% -U %DEST_USER% 1>>%LOG_FILE% 2>>&1
  17. IF "%ERRORLEVEL%" == "0" (ECHO [成功]) ELSE (ECHO [失败])

  18. PAUSE
  19. @ECHO ON






7Zip 批量解压
  1. @echo off
  2. for /R %%a in (*.jar) do (
  3.   echo %%~nxa
  4.   7z x -y -o%%~na %%~nxa
  5. )
  6. pause
  7. @echo on



@echo off

rem 屏幕显示当前目录下所有的java文件(递归)
for /R %a in (*.java) do echo %a

rem 将指定类型的文件输出的文本(绝对路径、递归)
for /R %%a in (*.jar) do echo %%a >> tree.txt

rem 删除指定的文件(递归)
rem 注意: 若未指定通配符,需判断文件是否存在
for /R %%a in (vssver.scc) do (
  if exist "%%a" (
    del "%%a"
    echo del "%%a"
  )
)

rem 使用变量,以缩短命令行的长度
set myCmd=java -Xbootclasspath/a:.\lib\axiom-api-1.2.7.jar;.\lib\axiom-impl-1.2.7.jar;.\lib\commons-httpclient-3.1.jar;.\lib\commons-logging-1.1.1.jar;.\lib\geronimo-stax-api_1.0_spec-1.0.1.jar;.\lib\wstx-asl-3.2.4.jar;.\lib\commons-lang-2.3.jar -jar .\dist\XXX.jar
%myCmd% .\TestCase02\Input_1.txt .\TestCase02\Input_2.txt .\TestCase02\Input_3.txt .\TestCase02\Input_4.txt
%myCmd% .\TestCase06\Input_2.txt .\TestCase06\Input_3.txt

rem 批量创建目录 如 TestCase_01, TestCase_02 等等

rem 启用变量延迟扩展
setLocal enableDelayedExpansion
rem 参数 : 编号的位数,有效值(2,3,4),如果为3,则 1->001, 11->011,其他不变
set digits=2
rem 目录名称前缀
set dirPrefix=TestCase_
rem 目录名称后缀
set dirSuffix=
rem 编号的起始值
set startIndex=1
rem 步进数
set step=1
rem 编号的上限值
set endIndex=20

for /L %%i in (%startIndex%, %step%,%endIndex%) do (
  set num=%%i
  if /i %%i LSS 10 (
    if /i %digits% EQU 2 (
      set num=0%%i
    rem ELSE 关键字必须与if的右括号同一行
    ) else (
      if /i %digits% EQU 3 (
        set num=00%%i
      ) else (
        if /i %digits% EQU 4 (set num=000%%i)
      )
    )
  ) else (
    if /i %%i LSS 100 (
      if /i %digits% EQU 3 (
        set num=0%%i
      ) else (
        if /i %digits% EQU 4 (set num=00%%i)
      )
    ) else (
      if /i %%i LSS 1000 (
        if /i %digits% EQU 4 (set num=0%%i)
      )
    )
  )

  rem 使用延时扩展的变量,创建目录
  mkdir %dirPrefix%!num!%dirSuffix%
)
rem 结束变量延迟扩展
endLocal

pause






@echo off
rem 功能: 通过Bat的变量延迟扩展,将 ${yourWebApp}/WEB-INF/lib/*.jar 添加到classpath中
rem 当前目录为J2EE的WebApp的根目录

rem 此后因为是本地变量,退出Local块后,classpath环境变量还和原来的一样,不改变。
setLocal enableDelayedExpansion
set SERVLET_JAR=C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar

set classpath=%classpath%;./WEB-INF/classes
set classpath=%classpath%;%SERVLET_JAR%
rem 循环将jar包追加的本地的classpath环境变量中
for %%i in (".\WEB-INF\lib\*.jar") do (
   set classpath=!classpath!;%%i
)

java -javaagent:./WEB-INF/lib/spring-agent.jar -Dlog4j.configuration=batch_log4j.xml me.test.pakcage.XXXMain %*

endLocal
@echo on

 

用Notepad2 替换系统的记事本(Notepad)
1. 将Notepad2.exe重命名为 notepad.exe
2. 将其覆盖到 %SYSTEMROOT%\system32\dllcache\
3. 将其覆盖到 %SYSTEMROOT%\system32\
4. 将其覆盖到 %SYSTEMROOT%
注意:如果出现让你插入Windows光盘,恢复原有文件的提示,请忽略。


@ECHO OFF
ECHO ######################################################################
ECHO #
ECHO # 用 notepad2 替换 系统的文本编辑器 notepad
ECHO #
ECHO ######################################################################
ECHO.
ECHO 在继续之前,请先关闭已经打开的 记事本(notepad.exe), 之后请按回车。
PAUSE
ECHO.
REM TASKKILL /IM notepad.exe

SET SUCCESS=1

COPY /Y notepad.exe %SYSTEMROOT%\system32\dllcache\
IF NOT "%ERRORLEVEL%" == "0" SET SUCCESS=0
IF "%SUCCESS%" == "0" GOTO END

COPY /Y notepad.exe %SYSTEMROOT%\system32\
IF NOT "%ERRORLEVEL%" == "0" SET SUCCESS=0
IF "%SUCCESS%" == "0" GOTO END

COPY /Y notepad.exe %SYSTEMROOT%\
IF NOT "%ERRORLEVEL%" == "0" SET SUCCESS=0

:END
ECHO.
IF "%SUCCESS%" == "1" (ECHO 替换成功!) ELSE (ECHO 替换失败!)
ECHO.
PAUSE




如果有多个工程需要并行ant,可以在更新之后,写个该脚本:

点击(此处)折叠或打开

  1. START "projA" /DprojA\ant cmd /C "ant & pause & exit"
  2. START "projB" /DprojB\ant cmd /C "ant & pause & exit"
  3. pause


阅读(1264) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~