将常用的 Bat 做个小结!
PostGreSQL 数据库表到表的备份
- @ECHO OFF
- REM 请先检查 %APPDATA%\postgresql\pgpass.conf 中是否已经保存了密码,否则会提示输入密码
- REM 参考: http://www.postgresql.org/docs/9.1/static/backup.html
- REM 参考: http://www.postgresql.org/docs/9.1/static/libpq-pgpass.html
- SET SRC_HOST=192.168.0.200
- SET SRC_USER=user1
- SET SRC_DB=user1
- SET DEST_HOST=192.168.0.100
- SET DEST_USER=user1
- SET DEST_DB=user1
- SET LOG_FILE=error.log
- ECHO %DATE%>%LOG_FILE%
- SET TABLE=xxxxxxxxx
- ECHO|SET /p=备份 XXXXX表
- ECHO 备份 XXXXX表>> %LOG_FILE%
- 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
- IF "%ERRORLEVEL%" == "0" (ECHO [成功]) ELSE (ECHO [失败])
- PAUSE
- @ECHO ON
7Zip 批量解压
- @echo off
- for /R %%a in (*.jar) do (
- echo %%~nxa
- 7z x -y -o%%~na %%~nxa
- )
- pause
- @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,可以在更新之后,写个该脚本:
- START "projA" /DprojA\ant cmd /C "ant & pause & exit"
- START "projB" /DprojB\ant cmd /C "ant & pause & exit"
- pause
阅读(1267) | 评论(0) | 转发(0) |