Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python脚本在批处理文件中弄乱了%time%_Python_Batch File_Windows 7 - Fatal编程技术网

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

python脚本在批处理文件中弄乱了%time%,python,batch-file,windows-7,Python,Batch File,Windows 7,我使用的是一个批处理文件,我定期在其中写入时间用于性能监控。这很有效,但最近我在该批处理文件中调用了一个Python脚本,时间度量似乎不再有效: 我的批处理文件如下所示: echo [%TIME%] -- task 1 <perform task 1> echo [%TIME%] -- task 2 <perform task 2> echo [%TIME%] -- finished 现在我已经用Python脚本(至少需要几分钟)代替了它,但我的%TIME%变量似乎不再

我使用的是一个批处理文件,我定期在其中写入时间用于性能监控。这很有效,但最近我在该批处理文件中调用了一个Python脚本,时间度量似乎不再有效:
我的批处理文件如下所示:

echo [%TIME%] -- task 1
<perform task 1>
echo [%TIME%] -- task 2
<perform task 2>
echo [%TIME%] -- finished
现在我已经用Python脚本(至少需要几分钟)代替了它,但我的%TIME%变量似乎不再更新了:

echo [%TIME%] -- task 1
<perform task 1>
echo [%TIME%] -- task 2
python task2.py
echo [%TIME%] -- finished
有人知道是什么导致了这个问题以及如何解决吗?

仅供参考,我正在使用虚拟Windows 7系统,Python安装版本为3.5.0。

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

输出是

[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] ---

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

输出是

[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] ---

这是您的实际代码,还是您遗漏了一些位?因为我几乎可以保证在一组括号中有
%TIME%
,这就是它没有更新的原因。请尝试
调用echo[%%%TIME%%]
谢谢您的快速评论。与此同时,我发现这个问题比最初看起来要复杂得多,我正在进行更深入的分析,以缩小问题的范围。我将相应地编辑原始问题,并在获得更多信息后尽快回到这个问题。同时,我可以告诉你,括号是出于可读性的原因而存在的,它们不会影响行为。至于
%%TIME%%
,这似乎不起作用。这是您的实际代码,还是您遗漏了一些位?因为我几乎可以保证在一组括号中有
%TIME%
,这就是它没有更新的原因。请尝试
调用echo[%%%TIME%%]
谢谢您的快速评论。与此同时,我发现这个问题比最初看起来要复杂得多,我正在进行更深入的分析,以缩小问题的范围。我将相应地编辑原始问题,并在获得更多信息后尽快回到这个问题。同时,我可以告诉你,括号是出于可读性的原因而存在的,它们不会影响行为。至于
%%TIME%%
,这似乎不起作用。非常感谢,Dmity,我在脚本中实现了这一点,现在一切都很好。非常感谢,Dmity,我在脚本中实现了这一点,现在一切都很好。