站點緩存着實頭痛,那么~重啟吧
網站做了站點緩存,測試的時候修改數據后需要重啟站點來清楚緩存
如何無需登陸服務器又不用改代碼就可以清理換網站上的緩存呢?
用重啟iis怎么樣~
能重啟IIS,自然也能干其他的
實現步驟
- 連接到遠程主機
- 在遠程主機一個創建一個包含iisreset命令(+移除計划任務)的腳本
- 給遠程主機添加一項過期的計划任務
- 立即執行計划任務
完整批處理腳本- 重啟iis.bat
@echo off
REM 遠程地址
set ycip=192.168.1.123
REM 服務器登陸名
set ycname=Administrator
REM 服務器登陸密碼
set ycpwd=123456
REM 計划任務名稱
set planName=自動重啟IIS
REM ipc名稱
set ipcName=admin
REM 執行腳本地址 \\%ycip%\%ipcName%$\ 對應C:\Windows
set execbat=\\%ycip%\%ipcName%$\Temp\execiisresest.bat
REM 執行路徑
set taskPath=C:\Windows\Temp\execiisresest.bat
echo 建立遠程連接
net use \\%ycip%\%ipcName%$ "%ycpwd%" /user:%ycname%
echo 寫入腳本到遠程腳本
REM ....寫日志 未寫入可能是權限問題
echo echo %time%執行任務^>^>C:^\Windows^\Temp^\iisreset_log.txt>%execbat%
REM ....重啟IIS
echo iisreset>>%execbat%
REM ....刪除計划任務 echo yes| 始終確認
echo echo yes^| SCHTASKS /Delete /TN "%planName%" /F>>%execbat%
REM 任務時間 設置一個過期時間,但是立即執行
set tasktime="00:00"
echo 在遠程主機創建計划任務
SCHTASKS /Create /S %ycip% /U %ycip%\%ycname% /P "%ycpwd%" /SC ONCE /ST %tasktime% /TN %planName% /TR %taskPath% /RU %ycname% /F
echo 立即執行定義的計划任務
SCHTASKS /Run /S %ycip% /U %ycip%\%ycname% /P "%ycpwd%" /I /TN "%planName%"
REM 刪除IPC連接
net use \\%ycip%\%ipcName%$ /del
pause
---------------手動分割線---------------
使用上面的方法若無權限問題可無礙運行,然在某些做了安全設置的情況下貌似有點走不通,故有了下面的版本
第二次修改
@echo off
REM 遠程地址
set ycip=192.169.1.123
REM 服務器登陸名
set ycname=Administrator
REM 服務器登陸密碼
set ycpwd=123456
REM 計划任務名稱
set planName=IIS_Reset
REM 遠程計算機名
set ycpcname=mypc
REM 執行腳本地址
set execbat=\\%ycip%\D$\\execiisresest.bat
set taskPath=D:\execiisresest.bat
echo 建立遠程連接
net use \\%ycip% "%ycpwd%" /user:%ycpcname%\%ycname%
echo 寫入腳本到遠程腳本
REM ....寫日志 未寫入可能是權限問題
echo echo %time%執行任務^>^>%taskPath%.txt>%execbat%
REM ....重啟IIS
echo iisreset>>%execbat%
REM ....刪除計划任務 echo yes| 始終確認
echo echo yes^| SCHTASKS /Delete /TN "%planName%" /F>>%execbat%
REM 任務時間延遲
set tasktime="00:00"
echo 在遠程主機創建計划任務
SCHTASKS /Create /S %ycip% /U %ycpcname%\%ycname% /P "%ycpwd%" /SC ONCE /ST %tasktime% /TN %planName% /TR %taskPath% /RU %ycname% /F
echo 立即執行定義的計划任務
SCHTASKS /Run /S %ycip% /U %ycpcname%\%ycname% /P "%ycpwd%" /I /TN "%planName%"
REM 刪除IPC連接
net use \\%ycip% /del
pause
關於腳本中的幾個關鍵點
-
批處理腳本中如何定義變量?
定義:set 變量名=值
使用:%變量名%
計算:set /a v1=1+1
-->v12set v2=1+1
-->v2"1+1" -
如何寫入文件?
寫入:echo 我是文本>文件名.后綴名
追加寫入:echo 我是文本>>文件名.后綴名
追加一個換行符:echo. >>文件名.后綴名
自動確認yes:echo yes|
-
如何寫入文件到建立遠程連接
首先建立遠程連接:net use \\192.168.1.123\admin$ "密碼" /user:登陸名
路徑對應C:\Windows
寫入文件:echo 文本>\\192.168.1.123\admin$\文件路徑
-
在遠程主機創建計划任務並執行
創建計划任務:SCHTASKS /Create /S %主機地址% /U %主機地址%\%主機登陸名% /P "%密碼%" /SC ONCE /ST %計划任務名% /TN %計划任務名% /TR %腳本或程序地址% /RU %主機登錄名亦可%
立即執行:SCHTASKS /Run /S %主機地址% /U %主機地址%\%主機登陸名% /P "%密碼%" /I /TN "%計划任務名%"
刪除任務:SCHTASKS /Run /S %主機地址% /U %主機地址%\%主機登陸名% /P "%密碼%" /I /TN "%計划任務名%"
-
如何將 |,> 等特殊字符寫入文本
示例:echo ^|>xxx.txt
^為轉義字符,這樣就能特殊字符輸出或寫入文件了 -
5種if語句的基本語法:
- 判斷兩個字符串是否相等,
if "字符串1"=="字符串2"(command語句) else ()
- 判斷兩個數值是否相等,
if 數值1 equ 數值2 command語句
- 判斷判斷驅動器,文件或文件夾是否存在
if exist filename command語句
- 判斷變量是否已經定義,
if defined 變量 command語句
- 判斷上個命令的返回值,
if errorlevel 數值 command語句
- 計划任務是會在C:\Windows\system32目錄下執行的,所以若腳本中未重定向路徑,則日志會保存到system32目錄
參考文章
利用schtasks遠程執行命令 https://sanwen.net/a/rsjveqo.html
DOS批處理中的特殊符號 http://www.2cto.com/os/201309/241025.html
DOS批處理添加任務計划 http://www.echojb.com/computer/2017/04/26/363341.html