我希望只将.xls文件从目录(包括子文件夹)中移出而不是.xlsx或.xlsm文件,我找到了一个我认为可以完成工作的命令,如果我指定.xlsx它可以正常工作并且只会提取具有该扩展名的文件。
但是当指定.xls时,它会通过.xls,.xlsx,.xlsm和.xlsb,即使我没有尾随通配符。
for /r "c:\source" %x in (*.xls) do move "%x" "c:\destination"
我对此并不熟悉,所以我可能只是遗漏了一些显而易见但已经尝试过搜索但找不到任何解决此问题的内容。
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
根据用户可见的长文件名和默认情况下存在于后台的短8.3文件名检查*.xls
模式,用于向后兼容。短文件名只有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"