windows批处理脚本逐行读取文本文档及毫秒级延时

因工作需要开发了一个循环杀死服务的脚本,该脚本执行后会将自己的进程id写到一个文本文件中,在必要的时候需要另一个脚本来杀死该脚本的运行。

循环杀死服务的脚本演示了如何获取脚本执行的进程id以及windows批处理脚本中毫秒级延时。

@echo on
rem 获取脚本执行的进程id
wmic process where name="wmic.exe" get parentprocessid > C:\stopMyServiceBatPid.txt
set n=0

:abc
set /a n+=1
sc config MessageManagerService start= disabled
taskkill /fi "Services eq MessageManagerService" /F
rem 秒级延时
rem ping -n 2 127.0.0.1>nul
rem 毫秒级延时
powershell -nop -c "& {sleep -m 10}"
if %n%==6000 exit
goto abc

杀死循环杀死服务的脚本演示了逐行读取文本文档,其中for循环读取文本文件('type C:\dbAgent\stopNpfBatPid.txt')中没有type则无法读取由脚本生成的文本文件。for循环内部自增变量必须设置setlocal enabledelayedexpansion,否则循环内部的自增变量的值不会变,同时在内部使用的时候必须用两个!号来获取变量的值,否则变量的值不会更新。

@echo off
rem 必须设置enabledelayedexpansion,否则循环内部自增变量的值不会变
setlocal enabledelayedexpansion
set /a n=0
for /f "delims=" %%a in ('type C:\stopMyServiceBatPid.txt') do (
    echo %%a
    set /a n+=1
    rem echo !n!
    rem 在bat中只能通过两个!来正确获取自增变量n的值
    if !n!==2 taskkill /f /pid %%a
)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值