如何在批处理脚本中忽略 "move" 命令的 8.3 文件名?
How to ignore 8.3 filename for "move" command in batchscript?
我要移动很多xml-文件,命名如下:
- 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 服务器上。
是否有任何类型的解决方法或替代命令来解决此问题?
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\"
)
我要移动很多xml-文件,命名如下:
- 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 服务器上。
是否有任何类型的解决方法或替代命令来解决此问题?
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\"
)