为什么在这种情况下 DOS 中的 MOVE 命令会以奇怪的方式处理通配符模式?

为什么在这种情况下 DOS 中的 MOVE 命令会以奇怪的方式处理通配符模式?

我在 Windows 7 下的 CMD 提示符中使用带有通配符模式的“移动”命令。

在我的源目录中,我有以下文件:

 movie1.avi
 movie1.avi_metadata
 movie2.avi
 movie2.avi_metadata

如果我输入命令,move source\*.avi dest它将移动所有四个文件,尽管我预计它只移动两个*.avi文件而不是*.avi_metadata文件。

正如预期的那样,move source\*.a dest不会move source\*.av dest移动任何文件。但是,当通配符模式的扩展名长度为 3 个字符时,它将移动所有以这三个字符开头的扩展名。

这是“移动”命令中的错误还是预期行为?是否有任何记录?


编辑:John Watts 指出,这可能是由于“短”文件名造成的。

那么,是否可以让 CMD 解释器中的命令仅对长文件名进行操作并忽略短文件名?

答案1

您可以通过 FINDSTR 管道传输 DIR /B 来过滤掉不需要的文件。您可以使用 FOR /F 处理这些结果。

for /f "eol=: delims=" %F in ('dir /b /a-d source\*.avi^|findstr /lie .avi') do move "source\%F" dest

相关内容