• 使用批处理脚本愉快的清理缓存


    站点缓存着实头痛,那么~重启吧

    网站做了站点缓存,测试的时候修改数据后需要重启站点来清楚缓存
    如何无需登陆服务器又不用改代码就可以清理换网站上的缓存呢?
    用重启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%$Tempexeciisresest.bat
    REM 执行路径
    set taskPath=C:WindowsTempexeciisresest.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.123admin$ "密码" /user:登陆名 路径对应C:Windows
      写入文件:echo 文本>\192.168.1.123admin$文件路径

    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:Windowssystem32目录下执行的,所以若脚本中未重定向路径,则日志会保存到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

  • 相关阅读:
    CMake 从文件路径中提取文件名
    std::multimap 按照key遍历---
    Windows / Linux 一件编译zlib库
    C++ 11 可变模板参数的两种展开方式
    cmake 生成VS项目文件夹
    C++ 利用文件流复制文件
    利用 getsockname 和 getpeername 来获取某一个链接的本地地址和远端地址
    Windows 用VS编译libevent源码
    揭示同步块索引(上):从lock开始
    C手写一个多线程,供java调用
  • 原文地址:https://www.cnblogs.com/morang/p/6939290.html
Copyright © 2020-2023  润新知