Как игнорировать имя файла 8.3 для команды "move" в 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.

Есть ли какой-либо тип обходных или альтернативных команд для решения этой проблемы?

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\"
)
Другие вопросы по тегам