我希望只将.xls文件从目录(包括子文件夹)中移出而不是.xlsx或.xlsm文件,我发现了一个我认为可以完成工作的命令,如果我指定.xlsx它会正常工作拉出具有该扩展名的文件。
但是当指定.xls时,它会通过.xls,.xlsx,.xlsm和.xlsb,即使我没有尾随通配符。
for /r "c:\source" %x in (*.xls) do move "%x" "c:\destination"
我对此并不熟悉,所以我可能只是错过了一些明显的东西,但尝试过搜索,找不到任何解决这个问题的方法。
任何帮助,将不胜感激。谢谢
*.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"