文章摘要
这个问题主要涉及批处理文件的权限问题。用户在使用`timeout`命令创建批处理文件(`timeout.bat`)时,发现双击运行后程序不会执行,而是直接跳转到文件开头重新执行。这与`bat`文件的权限有关。解决方法是使用管理员权限运行`bat`文件,例如通过`cmd /a`方式运行,确保脚本能够正确执行。此外,文章还提到在命令行中使用管理员权限(例如`cmd /a`)可以避免类似问题的发生,因为它会以管理员身份运行脚本,从而确保脚本不会跳转到文件开头。通过这种方式,用户可以更稳定地运行自己的延时脚本。
做一个延时执行的批处理命令,选用timeout命令来实现,但是碰到一个情况是写完后直接双击运行时,timeout 命令运行不了,每次运行到timeout的时候,命令就会跳到.bta文件的开头重新执行,后来选择管理员权限运行就可以了。
在命令行中运行
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
rem 打印当前时间
echo 当前时间【%time%】
rem 进行延时5s
timeout /nobreak /t 5
rem 延时后的时间
echo 延时后的时间【%time%】
rem 加入需要执行的代码-开始
rem 加入需要执行的代码-结束
pause
双击运行后出现以下界面;

一直在重复打印时间;
然后我把回显打开后发现;
::@echo off
代码每次运行到timeout这里都没有执行,然后就跳到文件的第一行去了;

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

bat命令需要查看权限,注意使用win+R进入cmd是具有管理员权限的,但是直接双击打开的bat文件是没有管理员权限的,没有对应的权限,有些对系统级别的控制,会出现奇怪的现象。
您可能感兴趣的文章:shell 创建子进程及并行延时执行命令方法盘点Java中延时任务的多种实现方式Redisson 分布式延时队列 RedissonDelayedQueue 运行流程生产redisson延时队列不消费问题排查解决开发中避免延时操作技巧详解
© 版权声明
文章版权归作者所有,未经允许请勿转载。