我在 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