【问题标题】:Time is never stored when using %time% in batch file在批处理文件中使用 %time% 时从不存储时间
【发布时间】:2017-12-28 23:38:14
【问题描述】:

我目前正在编写一个批处理文件,记录一个 ip 的 ping 并记录时间。 不幸的是,当我尝试使用 %time% 命令并存储它时,它总是什么都不返回。

当我单独运行命令时它可以工作,只是不能与我的其他代码一起运行

Set packet=0
Set Down=0
Set Up=0
Set time=0
SET /P IP=enter ip.
set counter=0
:ping
Rem ping -n 1 -w 2500 %IP%>>ping.txt
ping -n 1 -w 2500 %IP% > nul 2>&1 && set Test=Pass || set Test=Fail
FOR /F "tokens=1-9 delims==< " %%a IN ('PING -n 1 -w 2500 %IP%') DO IF "%%h"=="TTL" SET RESPONSE=%%g 
mode 100
Set time= %TIME:~0,5%
echo %time%
pause

【问题讨论】:

标签: batch-file time cmd syntax command


【解决方案1】:

让我重申@SomethingDark 已经说过的话。

这正是导致您的问题的原因,以及您在 = 登录后有一个空格的事实: Set time= %TIME:~0,5%

这会在当前时间之前添加一个空格,例如,该值会保存为“17:3”(5 个字符)。下次您运行相同的命令时,存储在 time 变量中的值将是“17:”(带有 2 个空格)等等。最终,您将在 time 变量中保存 5 个空格。

【讨论】:

  • 那么我如何将变量设为本地?我删除了空间,我仍然遇到同样的问题
  • 上面@Mofi 评论中的链接可能已经帮助您解决了这个问题。如果没有,您介意发布您的脚本的最新版本吗?我有一个看起来像这样的简单脚本,每次运行时都可以正常工作:SET MY_TIME=%TIME:~0,5%echo %MY_TIME%
  • 我删除了空格并在每一侧添加了额外的“%”,但现在它只返回 %TIME:~0,6% Set time=%%TIME:~0,6%% echo % time% 暂停
  • 您添加这些额外的 **%**s 有什么原因吗?另外,如前所述,请停止使用set time。只需给该变量一个不同的名称,例如CURR_TIME 或类似的名称。更改为0,6 有什么特别的原因吗?最后会给你一个额外的冒号。请按照我之前显示的代码进行操作,如果它仍然不适合您,请告诉我。这里有一些额外的解释:echo %TIME% 显示当前时间。例如,它显示 11:48:08.58。你需要一个子字符串,只是 HH:MM,这是 %TIME:~0,5% 返回的内容。
  • 在上面的一个链接中,它每边需要 2“%”,因为它在一个批处理文件中,我把 6 放进去因为我试图让这个东西工作,我改变了变量名称为土豆,它仍然返回 0 但由于某种原因 %date% 没有问题。设置土豆=%TIME:~0,5% echo %potato% pause set date=%date% echo %date% echo %time% pause Set /?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 2012-10-10
相关资源
最近更新 更多