仅移动.xls文件而不是.xlsx,.xlsx,.xlsb

问题描述 投票:2回答:1

我希望只将.xls文件从目录(包括子文件夹)中移出而不是.xlsx或.xlsm文件,我发现了一个我认为可以完成工作的命令,如果我指定.xlsx它会正常工作拉出具有该扩展名的文件。

但是当指定.xls时,它会通过.xls,.xlsx,.xlsm和.xlsb,即使我没有尾随通配符。

for /r "c:\source" %x in (*.xls) do move "%x" "c:\destination"

我对此并不熟悉,所以我可能只是错过了一些明显的东西,但尝试过搜索,找不到任何解决这个问题的方法。

任何帮助,将不胜感激。谢谢

cmd
1个回答
1
投票

*.xls模式将根据用户可见的长文件名和默认情况下存在于后台的短8.3文件名进行检查,旨在向后兼容。短文件名只有3个字符的扩展名,因此长名称为longfilename.xlsx的文件的文件扩展名为.xls

要克服这种现象,最简单的解决方案是通过findstr建立一个额外的过滤器:

for /F "delims= eol=|" %x in ('dir /S /A:-D /B "C:\source\*.xls" ^| findstr /I "\.xls$"') do move "%x" "c:\destination"
© www.soinside.com 2019 - 2024. All rights reserved.