windows下有很多场景需要编写批处理来解决问题,跟定时任务相结合使用更佳。
1.创建文件,md,mkdir都可以进行文件创建
set AwrPath=D:OracleTabChk if not exist %AwrPath% (md %AwrPath%)
2.创建一个txt,因为批处理没有直接命令创建文件文件的命令,所以可以直接出书一个txt
set AwrPath=D:OracleTabChk
set FILEPATH=%AwrPath% esult.txt if not exist %FILEPATH% (echo > %FILEPATH%)
3.清理文件
forfiles /p "d: est" /s /m *.* /d -7 /c "cmd /c del @path" d: est换成你要的目录路径; /d -7 指删除7天以前所有*.文件。
4.拷贝文件
rem 获取前一天的时间
set today=%date:~8,2%
set /a day=%today%-1
set yesterday=%date:~0,4%/%date:~5,2%/%day%
forfiles /p D:ackup /s /M *.bak /D +%yesterday% /C "cmd /c xcopy /Y @path Y:"
5.遍历输出一个文件
type+文件名 @echo off for /f %%i in (C:win_send_mail est.txt) do echo %%i pause
6.cmd输出回显与定格显示
@echo off --不显示输出内容
pause --显示执行界面
7.添加脚本注释
1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符) 2、rem 注释内容(不能出现重定向符号和管道符号) 3、echo 注释内容(不能出现重定向符号和管道符号)〉nul 4、if not exist nul 注释内容(不能出现重定向符号和管道符号) 5、:注释内容(注释文本不能与已有标签重名) 6、%注释内容%(可以用作行间注释,不能出现重定向符号和管道符号) 7、goto 标签 注释内容(可以用作说明goto的条件和执行内容) 8、:标签 注释内容(可以用作标签下方段的执行内容)
8.端口扩充
netsh int ipv4 show dynamicport tcp 查看端口的范围 netstat -ano|find /c "TIME_WAIT" 查看等待的端口数 netsh int ipv4 set dynamicport tcp start=1025 num=60000 扩充端口范围
9.调用mysql脚本
mysql -uroot -p123456 < D:OracleTabChk ab_check.sql > D:OracleTabChk esult.txt
10.调用oracle脚本,在有些windows机器上直接@一个sql文件,会没有反应,在windows2012上就可以直接@,但是在老一些的系统上就不行,所以老的系统就需要在执行脚本上添加spool自己打印
windows2008上测试
set ORACLE_HOME=D:appadminproduct11.2.0dbhome_1 %ORACLE_HOME%BINsqlplus / as sysdba @D:OracleTabChk ab_check.sql
tab_check.sql
spool D:OracleTabChk esult.txt
+需要执行的脚本
spool off
windows2012上测试
set ORACLE_HOME=D:appadminproduct11.2.0dbhome_1 %ORACLE_HOME%BINsqlplus / as sysdba @D:OracleTabChk ab_check.sql > D:OracleTabChk esult.txt