这听起来很奇怪,但是在切换到 Windows 11 之后,我发现批处理 .cmd 文件 FOR 循环的行为发生了根本性的变化。
我在做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 循环中。
我以前从未见过这样的行为。有人有什么想法吗?