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

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

网站做了站点缓存,测试的时候修改数据后需要重启站点来清楚缓存 如何无需登陆服务器又不用改代码就可以清理换网站上的缓存呢? 用重启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 -->v1==2 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语句
  7. 计划任务是会在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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

H5缓存机制浅析

1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离...

47980
来自专栏散尽浮华

手动编写的几个简单的puppet管理配置

puppet在自动化配置管理方面有很强大的优势,这里就不做过多介绍了,下面记录下几个简单的puppet管理配置: 一、首先在服务端和客户端安装puppet和fa...

33080
来自专栏Grace development

PHP-FPM进程配置算法

15610
来自专栏散尽浮华

进程管理利器-supervisor部署记录

一、简单介绍 supervisor是用来管理进程的一个工具,止于为什么要用supervisor,是因为相对于linux传统的进程管理方式来说,它有很多的优势: ...

44880
来自专栏Java成长之路

tomcat数据源配置

配置webRoot/WEB-INF/aurora.database/datasource.config文件:

54620
来自专栏静默虚空的博客

嵌入式服务器jetty,让你更快开发web

概述 jetty是什么? jetty是轻量级的web服务器和servlet引擎。 它的最大特点是:可以很方便的作为嵌入式服务器。 它是eclipse的一个开源项...

46880
来自专栏分布式系统进阶

Kafka重置消费的OffsetKafka源码分析-汇总

60020
来自专栏晓晨的专栏

ASP.NET Core + Docker +Jenkins 实现持续集成

26520
来自专栏Ryan Miao

Javascript跨域后台设置拦截

子域名之间互相访问需要跨域 结论放在开头: 服务端必须设置允许跨域 客户端带cookie需要设置withCredentials 无论服务端是否允许跨域,该req...

28980
来自专栏张善友的专栏

Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持

Jexus 是一款运行于 Linux 平台,以支持  ASP.NET、PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器。最新版 5.8...

23360

扫码关注云+社区

领取腾讯云代金券