windows下有很多場景需要編寫批處理來解決問題,跟定時任務相結合使用更佳。
1.建立檔案,md,mkdir都可以進行檔案建立
set AwrPath=D:\OracleTabChk if not exist %AwrPath% (md %AwrPath%)
2.建立一個txt,因為批處理沒有直接命令建立檔案檔案的命令,所以可以直接出書一個txt
set AwrPath=D:\OracleTabChk
set FILEPATH=%AwrPath%\result.txt if not exist %FILEPATH% (echo > %FILEPATH%)
3.清理檔案
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path" d:\test換成你要的目錄路徑; /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:\backup /s /M *.bak /D +%yesterday% /C "cmd /c xcopy /Y @path Y:"
5.遍歷輸出一個檔案
type+檔名 @echo off for /f %%i in (C:\win_send_mail\test.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\tab_check.sql > D:\OracleTabChk\result.txt
10.呼叫oracle指令碼,在有些windows機器上直接@一個sql檔案,會沒有反應,在windows2012上就可以直接@,但是在老一些的系統上就不行,所以老的系統就需要在執行指令碼上新增spool自己列印
windows2008上測試
set ORACLE_HOME=D:\app\admin\product\11.2.0\dbhome_1 %ORACLE_HOME%\BIN\sqlplus / as sysdba @D:\OracleTabChk\tab_check.sql
tab_check.sql
spool D:\OracleTabChk\result.txt
+需要執行的指令碼
spool off
windows2012上測試
set ORACLE_HOME=D:\app\admin\product\11.2.0\dbhome_1 %ORACLE_HOME%\BIN\sqlplus / as sysdba @D:\OracleTabChk\tab_check.sql > D:\OracleTabChk\result.txt