Bat脚本-timeout 命令(延时执行)

概述

做一个延时执行的批处理命令,选用timeout命令来实现,但是碰到一个情况是写完后直接双击运行时,timeout 命令运行不了,每次运行到timeout的时候,命令就会跳到.bta文件的开头重新执行,后来选择管理员权限运行就可以了。

命令-timeout

在命令行中运行

timeout  /?

可以得到该命令的说明

C:\Users\L>timeout /?

TIMEOUT [/T] timeout [/NOBREAK]

描述:
    这个工具接受超时参数,等候一段指定的时间(秒)或等按任意键。它还接受
    一个参数,忽视按键。

参数列表:
    /T        timeout       指定等候的秒数。有效范围从 -1 到 99999 秒。

/NOBREAK                忽略按键并等待指定的时间。

/?                      显示此帮助消息。

注意: 超时值 -1 表示无限期地等待按键。

示例:

TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1

问题复现

然后参考大哥们的方法写了以下代码,保存成timeout.bat文件;

@echo off
rem 打印当前时间
echo 当前时间【%time%】
rem 进行延时5s
timeout /nobreak /t 5
rem 延时后的时间
echo 延时后的时间【%time%】
rem 加入需要执行的代码-开始
rem 加入需要执行的代码-结束
pause

双击运行后出现以下界面;

一直在重复打印时间;
然后我把回显打开后发现;

::@echo off

代码每次运行到timeout这里都没有执行,然后就跳到文件的第一行去了;

解决方案

使用管理员权限运行就不会重新跳到第一行

总结

bat命令需要查看权限,注意使用win+R进入cmd是具有管理员权限的,但是直接双击打开的bat文件是没有管理员权限的,没有对应的权限,有些对系统级别的控制,会出现奇怪的现象。

(0)

相关推荐

  • Redisson 分布式延时队列 RedissonDelayedQueue 运行流程

    目录 前言 基本使用 内部数据结构介绍 基本流程 发送延时消息 获取延时消息 初始化延时队列 总结 前言 因为工作中需要用到分布式的延时队列,调研了一段时间,选择使用 RedissonDelayedQueue,为了搞清楚内部运行流程,特记录下来. 总体流程大概是图中的这个样子,初看一眼有点不知从何下手,接下来我会通过以下几点来分析流程,相信看完本文你能了解整个运行流程. 基本使用 内部数据结构介绍 基本流程 发送延时消息 获取延时消息 初始化延时队列 基本使用 发送延迟消息代码如下,发送了一条延

  • 生产redisson延时队列不消费问题排查解决

    目录 问题描述 初步排查 排查过程 解决方案 redisson 延时队列原理 流程总结 问题描述 项目使用redisson延时队列功能,实现直播的开播提醒,突然有一天业务爆出问题,未触发开播提醒. 初步排查 首先通过查询生产日志,发送端日志存在,没有消费日志,猜测消费端没有消费到延时消息,,在dba的协助下查询redis队列,消息也确实存在,但已经过了过期时间,由此证明redisson消费者出现问题.通过服务日志发现在最后一次设置自定义推送任务是在一次服务发布之前,服务发布后,之前设置的自定义推

  • 盘点Java中延时任务的多种实现方式

    目录 场景描述 实现方式 一.挂起线程 二.ScheduledExecutorService 延迟任务线程池 三.DelayQueue(延时队列) 四.Redis-为key指定超时时长,并监听失效key 五.时间轮 六.消息队列-延迟队列 场景描述 ①需要实现一个定时发布系统通告的功能,如何实现? ②支付超时,订单自动取消,如何实现? 实现方式 一.挂起线程 推荐指数:★★☆ 优点: JDK原生(JUC包下)支持,无需引入新的依赖: 缺点: (1)基于内存,应用重启(或宕机)会导致任务丢失 (2

  • shell 创建子进程及并行延时执行命令方法

    目录 shell 创建子进程方法 1. 什么是shell子进程 2. shell什么情况下会产生子进程 3.使用括号来创建子进程 shell 创建子进程方法 1. 什么是shell子进程 子进程,是从父子进程的概念出发的,unix操作系统的进程从init进程开始(init进程为1,而进程号0为系统原始进程,以下讨论的进程原则上不包括进程0)均有其对应的子进程,就算是由于父进程先行结束导致的孤儿进程,也会被init领养,使其父进程ID为1.也因为所有的进程均有父进程,事实上,所有进程的创建,都可视

  • 开发中避免延时操作技巧详解

    目录 前言 使用延时的场景 获取view的宽高 定时查询服务器结果 广播顺序 延时初始化 使用延时的场景 小心使用延时 前言 开发中我们或多或少会涉及到一些场景需要使用延时操作,而延时操作其实并不是一个很好的选择,并不是一个很好的方案,因为它不可控,也可能产生时序的逻辑问题.这次就来盘点一些使用延时操作的场景和如何去避免,本次内容比较基础. 使用延时的场景 在刚接触开发的时候,我们无脑解决问题的方案基本只有两种,异常捕获和延时.异常捕获容易理解,当碰到崩溃又分析不出原因时,往往加个try-cat

  • Bat脚本-timeout 命令(延时执行)

    概述 做一个延时执行的批处理命令,选用timeout命令来实现,但是碰到一个情况是写完后直接双击运行时,timeout 命令运行不了,每次运行到timeout的时候,命令就会跳到.bta文件的开头重新执行,后来选择管理员权限运行就可以了. 命令-timeout 在命令行中运行 timeout  /? 可以得到该命令的说明 C:\Users\L>timeout /? TIMEOUT [/T] timeout [/NOBREAK] 描述:    这个工具接受超时参数,等候一段指定的时间(秒)或等按任

  • Java 执行CMD命令或执行BAT批处理方式

    Java 执行CMD命令或执行BAT批处理 背景 日常开发中总能遇到一些奇怪的需求,例如使用java执行cmd命令或者bat批处理文件,今天就简单记录一下使用过程. 使用 废话不多说直接上代码 import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class Cmder { /** * 执行一个cm

  • 批处理BAT脚本中set命令的使用详解(批处理之家Batcher)

    目录 一.使用 set 命令进行赋值 1.等号两边不要有空格 2.变量值包含特殊字符需用双引号 3.避免使用系统环境变量同名的自定义变量 4.语法可行但不推荐使用 二.使用 set /p 命令读取输入 三.使用 set /a 命令进行数学运算(1) 四.使用 set /a 命令进行数学运算(2) 五.使用 set 命令进行字符串截取 六.使用 set 命令进行字符串替换 七.set命令知识点(1)把命令结果赋值给变量 八.set命令知识点(2)显示以某字符开头的变量 一.使用 set 命令进行赋

  • 关于bat脚本中的命令状态码相关的%errorlevel%变量问题

    bat脚本中常用%errorlevel%表达上一条命令的返回值,即命令执行状态码.也称命令退出码 一般上一条命令的执行结果返回的值只有两种,0和非0 (如常见的1,2,4,5,9009等等),0一般会被视为成功,非0为失败或者异常 对于9009,在cmd中经常会发生输入的命令错误,或者不存在的命令,这时就会返回9009这种状态码, 1.对于%errorlevel%变量,一般都是与if结合使用较多,如下: dir qq5201351.txt if %errorlevel% ==0 (del /q/

  • 基于命令行执行带参数的php脚本并取得参数的方法

    本文分析了基于命令行执行带参数的php脚本并取得参数的方法.分享给大家供大家参考,具体如下: 一.为什么我们要在命令行下运行php脚本呢? 个人理解,主要有二个原因: 1. 利用crontab去跑php,可以给服务器减压,当然在这里有一个条件,就是实时性要求不高.比如:sns中的好友动态,这个实时要求不高,但是数据量比较大,这个时候定时跑的话,会给web服务器,数据库服务器分担不小的压力. 2. 就是我们要定时去完成某一事情,比如:我要删除一个月前,用户留言,这个时候,写的php脚本在cront

  • 命令行执行php脚本中的$argv和$argc配置方法

    在实际工作中有可能会碰到需要在nginx命令行执行php脚本的时候,当然你可以去配置一个conf用外网访问. 在nginx命令行中 使用 php index.php 就可以执行这个index.php脚本了,但是怎么传递参数呢?那就要用到$argv和$aegc了.不用开启什么设置 直接在脚本中使用,类似于http传值中的$_POST和$_GET.. 在index.php插入以下菜吗 <?php echo $argv[0]; echo "\n"; var_dump($argv[1])

  • 在linux shell脚本中root切换到普通用户执行脚本或命令的方法

    需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co

  • 通过shell脚本循环进入目录执行命令的方法

    公司需要部署一套新的环境,新环境里面好多项目,整体目录结构如为:/webserver/* 所有的项目都在webserver目录下,其中有laravel和thinkphp项目的代码. laravel框架中, 根目录下storage vendor bootstrap 目录需要设置777权限. thinkphp框架,根目录App下Runtime目录需要设置777权限. 因此相对应的目录结构如下; laravel框架的目录结构为:/webserver/aaa/www/storage,vendor,boo

  • 解决Python 命令行执行脚本时,提示导入的包找不到的问题

    在Pydev能正常执行的脚本,在导出后在命令行执行,通常会报自己写的包导入时找不到. 一:报错原因 在PyDev中,test.py 中导入TestUserCase里面的py文件时,会写: from TestUserCase.Test import Test 这在命Pydev中没错,但是在命令行中确出现错误. 因为在PyDev中默认路径除了当前文件所在路劲外,还有工程根路径.而在命令行中只有当前文件所在路径.TestUserCase是test.py文件的上一级目录,所以在命令行中test.py i

随机推荐