python脚本弄乱了批处理文件中的%time%

多米尼克

我正在使用批处理文件,在该文件中我定期编写时间以进行性能监视。这很好用,但是最近我在该批处理文件中调用了Python脚本,时间测量似乎不再起作用:
我的批处理文件如下所示:

echo [%TIME%] -- task 1
<perform task 1>
echo [%TIME%] -- task 2
<perform task 2>
echo [%TIME%] -- finished

,结果如下:

[14:51:32.97] -- task 1
[14:51:34.32] -- task 2
[14:51:39.07] -- finished

现在,我已替换为Python脚本(至少需要几分钟),但是我的%TIME%变量似乎不再更新了:

echo [%TIME%] -- task 1
<perform task 1>
echo [%TIME%] -- task 2
python task2.py
echo [%TIME%] -- finished

给出以下结果:

[14:51:40.02] -- task 1
[14:51:44.32] -- task 2
[14:51:44.32] -- finished

有人知道什么可能导致此问题以及如何解决吗?
供您参考,我正在使用虚拟Windows 7系统,并且我的Python安装版本为3.5.0。

德米特里·索科洛夫(Dmitry Sokolov)

我相信这个问题不是与“ python相关”的。例如脚本

@echo off

echo [%TIME%] ---
echo [%TIME%] ping1
ping 8.8.8.8 >nul
echo [%TIME%] ping1 done

if not exist 123 (
echo [%TIME%] ping2
ping 8.8.8.8 >nul
echo [%TIME%] ping2 done
)

echo [%TIME%] ping3
ping 8.8.8.8 >nul
echo [%TIME%] ping3 done
echo [%TIME%] ---

将输出

[20:33:32,00] ---
[20:33:32,00] ping1
[20:33:35,04] ping1 done
[20:33:35,04] ping2
[20:33:35,04] ping2 done
[20:33:38,12] ping3
[20:33:41,16] ping3 done
[20:33:41,16] ---

如您所见,ping2并且ping2 done具有相同的时间戳。使用括号时( ),即使变量值在代码块内更改,CMD shell也会在代码块的开头扩展并读取所有变量,并使用这些值。

所以在这种情况下,解决方案是

if not exist 123 (
call echo [%%TIME%%] ping2
ping 8.8.8.8 >nul
call echo [%%TIME%%] ping2 done
)

或者

@echo off
Setlocal EnableDelayedExpansion
...
if not exist 123 (
echo [!TIME!] ping2
ping 8.8.8.8 >nul
echo [!TIME!] ping2 done
)

和输出是

[20:45:28,45] ---
[20:45:28,45] ping1
[20:45:31,49] ping1 done
[20:45:31,49] ping2
[20:45:34,53] ping2 done
[20:45:34,54] ping3
[20:45:37,59] ping3 done
[20:45:37,59] ---

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从批处理文件在Powershell脚本中运行参数

来自分类Dev

如何在Shell脚本中批处理文件?

来自分类Dev

使用脚本在批处理文件中运行django shell

来自分类Dev

从批处理文件在Powershell脚本中运行参数

来自分类Dev

在批处理文件中运行PowerShell脚本

来自分类Dev

批处理文件脚本在XP中不起作用

来自分类Dev

无法在批处理文件中运行python脚本-可能是Bootcamp问题

来自分类Dev

%TIME%作为批处理文件功能中的输入参数

来自分类Dev

锁定脚本批处理文件

来自分类Dev

从批处理文件调用PowerShell脚本

来自分类Dev

我可以在WinSCP批处理脚本中引用批处理文件目录吗?

来自分类Dev

批处理文件重命名与Python

来自分类Dev

从批处理文件调用python行

来自分类Dev

对于批处理文件中的循环

来自分类Dev

在Powershell中执行批处理文件

来自分类Dev

在批处理文件中设置路径

来自分类Dev

在批处理文件中减去天数

来自分类Dev

在Java中运行批处理文件

来自分类Dev

批处理文件中的网址解码

来自分类Dev

批处理文件:变量中的变量

来自分类Dev

在批处理文件中列出键值对

来自分类Dev

批处理文件中的wkhtmltopdf

来自分类Dev

批处理文件中的变量乘法

来自分类Dev

批处理文件中的PHPUnit设置

来自分类Dev

在批处理文件中引发异常

来自分类Dev

批处理文件中的阻止代码

来自分类Dev

批处理文件中括号的问题

来自分类Dev

批处理文件中的括号

来自分类Dev

批处理文件变量中的句点