我正在准备一个 Windows BAT 脚本,它使用了一些新功能,例如setlocal
FOR 循环中的一组命令,例如
for %%a in (a b c) do (
del %%a.bak
ren %%.a %%a.bak
)
我想知道各个功能何时推出。这样我就可以知道这样的 BAT 脚本是否与 Windows XP、Windows 7 或 Windows 8.1 兼容。
编辑:
FOR 命令相当古老。我对使用圆括号的命令分组语法感到好奇。
但还有其他功能。例如,在 BAT 脚本中调用函数。询问每个单独的功能没有意义。这就是我询问历史记录的原因。
答案1
Setlocal/endlocal 和 FOR 语法至少从 1996 年就已经存在。Windows NT 4(1996 年 7 月)包含了它们以及我们今天所看到的大多数(如果不是全部)语法。从那时起,最大的变化来自 Windows 2000(1999 年 12 月)。仅举一个例子:当时 setlocal 有一对额外的开关可用:ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION。在 NT4 中运行的脚本应该可以在此后的每个 NT 系列操作系统中运行(2000、XP、Vista、7、8、8.1 和 Windows 10,以及 Server 2003 到 2016)。Rob van der Woude 的脚本页面包含一个命令列表,其中包括有关它们首次出现的操作系统的信息。您可以使用它来确保向后兼容性。
答案2
微软没有提到命令的历史记录,所以我转向回溯机器并搜索保存文档的日期。
Wayback Machine 似乎对微软链接的处理效果不佳,所以我搜索了ss64.com 文档。
对于该setlocal
命令,最早的页面实例
设置本地
于 2003 年 2 月被 Wayback Machine 录制。
对于该FOR
命令,最早的页面实例
为了
2003 年 2 月也被记录在 Wayback Machine 上。
这些功能似乎至少可以追溯到 Windows XP 和 Windows Server 2003。
我在 XP 虚拟机中测试了这两个命令,它们运行完美。我无法访问早期版本的 Windows,但我认为 XP 足以满足您的目的。