使用批處理腳本愉快的清理緩存


站點緩存着實頭痛,那么~重啟吧

網站做了站點緩存,測試的時候修改數據后需要重啟站點來清楚緩存
如何無需登陸服務器又不用改代碼就可以清理換網站上的緩存呢?
用重啟iis怎么樣~
能重啟IIS,自然也能干其他的

實現步驟

  1. 連接到遠程主機
  2. 在遠程主機一個創建一個包含iisreset命令(+移除計划任務)的腳本
  3. 給遠程主機添加一項過期的計划任務
  4. 立即執行計划任務

完整批處理腳本- 重啟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

關於腳本中的幾個關鍵點

  1. 批處理腳本中如何定義變量?
    定義:set 變量名=值
    使用:%變量名%
    計算:set /a v1=1+1 -->v12 set v2=1+1-->v2"1+1"

  2. 如何寫入文件?
    寫入:echo 我是文本>文件名.后綴名
    追加寫入:echo 我是文本>>文件名.后綴名
    追加一個換行符:echo. >>文件名.后綴名
    自動確認yes:echo yes|

  3. 如何寫入文件到建立遠程連接
    首先建立遠程連接: net use \\192.168.1.123\admin$ "密碼" /user:登陸名 路徑對應C:\Windows
    寫入文件:echo 文本>\\192.168.1.123\admin$\文件路徑

  4. 在遠程主機創建計划任務並執行
    創建計划任務: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 "%計划任務名%"

  5. 如何將 |,> 等特殊字符寫入文本
    示例:echo ^|>xxx.txt ^為轉義字符,這樣就能特殊字符輸出或寫入文件了

  6. 5種if語句的基本語法:

  1. 判斷兩個字符串是否相等,if "字符串1"=="字符串2"(command語句) else ()
  2. 判斷兩個數值是否相等,if 數值1 equ 數值2 command語句
  3. 判斷判斷驅動器,文件或文件夾是否存在if exist filename command語句
  4. 判斷變量是否已經定義,if defined 變量 command語句
  5. 判斷上個命令的返回值,if errorlevel 數值 command語句
  1. 計划任務是會在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM