Windows 11 批处理 *.cmd 文件 FOR 循环行为已更改

问题描述 投票:0回答:0

这听起来很奇怪,但是在切换到 Windows 11 之后,我发现批处理 .cmd 文件 FOR 循环的行为发生了根本性的变化。

我在做MP4文件处理。在处理过程中,我执行以下操作。

  1. 将文件从 example.mp4 重命名为 example.mp4_original
  2. 使用 example.mp4_original 使用更新后的元数据重新创建 example.mp4
  3. 对 example.mp4 做一些额外的事情

我使用这个简单的 FOR 循环来查找和处理目录中的所有 MP4 文件:

对于 (.*.mp4) 中的 %%A 做 (
调用:处理“%%~nxA” )

Windows 11 之前的版本运行良好。 FOR 循环会找到目录中的每个 MP4 文件,我会进行处理,完成后,我的目录将如下所示:

example1.mp4_original 例子1.mp4 example2.mp4_original 例子2.mp4 example3.mp4_original example3.mp4

但是在 Windows 11 中,FOR 循环行为发生了变化。这听起来很奇怪,但他就是这样做的。如果我只是循环并打印出文件名,我会得到所有 MP4 文件的列表:

例子1.mp4 例子2.mp4 example3.mp4

但是,当我进行处理并将 example1.mp4 重命名为 example1.mp4_original 然后重新创建 example1.mp4 时,Windows 11 中的 FOR 循环现在正在做的是以某种方式“找到”新的 example1.mp4 并将其“添加”到FOR 循环如此有效 FOR 循环现在永远循环一遍又一遍地重新处理文件。

现在我认为我的处理可能有问题,所以我创建了一个简单的示例,它所做的只是将 example1.mp4 重命名为 example1.mp4_original,然后使用复制命令将 example1.mp4_original 复制为 example1.mp4。果然,FOR 循环再次以某种方式“找到”这个新文件并将其“添加”到 FOR 循环中。

我以前从未见过这样的行为。有人有什么想法吗?

for-loop batch-file cmd dos
© www.soinside.com 2019 - 2024. All rights reserved.