rsync
rsync
- это инструменты, доступные для windows тоже, обычно используется для удаленной синхронизации каталога... но он отлично работает и на локальном каталоге... как указано в его собственном описании
быстрый, универсальный, дистанционное (и местной) file-copying tool
отсюда ответ на unix.stackexchange...
rsync -a --prune-empty-dirs --include '*/' --include '*.txt' --exclude '*' source/ target/
Примечание что существует опция чтобы удалить файлы из источника, которые вы можете включить в командную строку, я думаю, что вы ищете --remove-source-files
, а , проверьте его внимательно. Еще один вариант, который может оказаться полезным, это -n
-n, --dry-run perform a trial run with no changes made
--remove-source-files sender removes synchronized files (non-dir)
найти
find
это еще один инструмент, который вы можете найти в вашем bash
оболочка под windows, а также скомпилированный исполняемый файл (gnu findutils)...
Следующая строка работает под Linux, но вы можете изменить cp
заявление в соответствие с требованиями системы. От другого ответ...
find . -name '*.txt' -exec cp --parents \{\} /target \;
Windows эквивалент find
С другой вопрос/ответ для вашего пакетного сценария вы можете использовать эти подсказки...
dir <drive: [drive:]> /s | findstr /i <pattern>
... конечно, если они чувствовали необходимость сделать властьshell разумно ожидать, что в это окружающая среда должна быть более простой способ сделать она...
но, может быть, следующая достаточно простая отправная точка для вашего скрипта:
dir c:\foo /s *.txt