【问题标题】:python script messes up %time% in batchfilepython脚本在批处理文件中弄乱了%time%
【发布时间】:2015-10-15 13:26:57
【问题描述】:

我正在处理一个批处理文件,我会定期在其中写入时间以进行性能监控。这工作得很好,但最近我在该批处理文件中调用了一个 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。

【问题讨论】:

  • 这是您的实际代码,还是您遗漏了一些代码?因为我几乎可以保证您在一组括号内有%TIME%,这就是它没有更新的原因。
  • 试试call echo [%%time%%]
  • 感谢您的快速cmets。同时我发现这个问题比最初看起来要复杂得多,我正在做更深入的分析以缩小问题的范围。我将相应地编辑原始问题,并在获得更多信息后立即回复。同时我可以告诉你,括号是出于可读性的原因,它们不会影响行为。至于%%TIME%%,好像不行。

标签: python batch-file windows-7


【解决方案1】:

我相信这个问题与“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] ---

如您所见,ping2ping2 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] ---

【讨论】:

  • 非常感谢,Dmity,我已经在我的脚本中实现了这个,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多