如何忽略8.3文件名"移动" batchscript中的命令?

时间:2015-04-30 08:03:46

标签: windows batch-file cmd move short-filenames

我必须移动很多xml-Files,命名如下:

  • F010199004524001_904.XML
  • F010199805946001_737.XML
  • F010199904725001_611.XML
  • F030390114543001_901.XML
  • F030390114544001_257.XML
  • F030390114545001_901.XML

在我的批处理文件中,有这一行:

移动C:\ source \ F01 * .xml C:\ target \ F01 \

现在我遇到了问题,有些文件有不同的8.3文件名,例如

" F030390114545001_901.XML"名称为" F01FCF~1.XML"所以这个文件也会在目录" F01"。

中移动

命令" fsutil 8dot3name strip"在我的情况下没用,因为批处理在2003服务器上运行。

是否有任何类型的变通方法或替代命令来解决此问题?

1 个答案:

答案 0 :(得分:1)

for /f %%a in ('dir /b /a:-d "c:\source"^| findstr /i /b "F01"^|findstr /i /e ".xml"') do (
   move "%%~fa" "C:\target\F01\"
)

此?

修改

findstr过滤可以使用单个表达式完成 -

findstr /beri "f01.*xml"

所以

for /f %%a in ('dir /b /a:-d "c:\source"^| findstr /beri "f01.*xml"') do (
   move "%%~fa" "C:\target\F01\"
)