命令“time 1:10”“echo%time%”返回1:09

时间:2015-12-19 03:15:11

标签: batch-file

我的批处理脚本连续执行了15次。

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        ThemeManager.ChangeAppStyle(this,
                                    ThemeManager.GetAccent("Amber"),
                                    ThemeManager.GetAppTheme("BaseDark"));

        var allTypes = typeof(App).Assembly.GetTypes();
        var filteredTypes = allTypes.Where(d =>
            typeof(MetroWindow).IsAssignableFrom(d)
            && typeof(MetroWindow) != d
            && !d.IsAbstract).ToList();

        foreach (var type in filteredTypes)
        {
            var defaultStyle = this.Resources["MetroWindowDefault"];
            this.Resources.Add(type, defaultStyle);
        }

        base.OnStartup(e);
    }
}

结果返回1:09。我已经尝试了几毫秒,而它正好落后了一毫秒。这怎么可能?

2 个答案:

答案 0 :(得分:2)

这是因为CMD.EXE在执行命令之前会扩展%time%。以下内容将为您提供您期望的结果:

setlocal enabledelayedexpansion
time 1:10
echo !time!

答案 1 :(得分:0)

(仅限理论)

我建议发生的事情是,设定的时间实际上比定义的时间早一个“滴答”。

然后,当下一个“滴答”发生时,时间变为“定义”。

下一次“滴答”发生的时间是从1纳秒(直接在设定时间之后)到之后的一个“滴答”(即在设定时间之前发生滴答)的任何时间。

如果时间这样设置,那么在设置之后直接读取时间将随机说(时间设置)或(时间设置+ 1刻度)取决于设定读数后多久才实际执行。当然,如果 以这种方式设置,那么它会随机说(时间设置 - 1刻度)或(时间设置)......

那么 - 嘀嗒多久?假设它是1ms(直观上有意义)那么显示的时间是在centicesonds中,所以截断它是* .99秒

我质疑断言 echo%time%返回1:09:99.99 。我更倾向于相信 1:09:59.99

正如我所说,只有理论......