【发布时间】:2022-01-07 11:49:55
【问题描述】:
假设我在 Windows 10 上有一个包含以下内容的批处理文件:
:loop
echo start
timeout /t 100 /nobreak
goto :loop
如果我从命令行运行批处理文件,它会按预期每 100 秒回显一次 start。
如果我编辑批处理文件但不保存它,计时器会更新。所以我可以将其编辑到 10 秒,start 将每 10 秒打印一次。
这在两个层面上对我来说毫无意义:
- 确定循环已加载到内存中然后运行?即使我保存了对文件的更改,脚本也应该在第一次加载时执行,而不是每次都检查批处理文件的内容?
- 脚本如何知道我对文件所做的编辑,如果它们没有被保存和定稿?我正在使用 Sublime Text,并没有以任何方式更改文件。
【问题讨论】:
-
surely the loop is loaded into memory and then just run?- 不。解析器从文件加载每一(逻辑)行,在加载下一行之前执行它从文件。 -
不太清楚,您要达到什么目的 - 我运行了您的文件,它正在回显开始,然后等待 100 秒并无限重复循环。也许您发布了您正在谈论的编辑?
-
我不知道 Sublime Text,但在 documentation 中找到了一个
save_on_focus_lost设置,这将回答您的第二个问题。 -
我想我理解他的问题 - sublime text 使它能够在您输入并保存后立即自动运行代码,编译器会自动重新启动程序/ webapp。可能是不可能的批处理文件?
-
@Stephan 看来你是对的。我已激活
save_on_focus_lost。我想我从来没有注意到它,因为其他语言一次加载整个文件而不是逐行加载。
标签: batch-file windows-10