Как передвигаются все.txt файлы в структуре каталога в другой каталог через командную строку?

у меня довольно обширная структура каталогов:

c:foo
  foo
  foodoc1
  foodoc2
  foo
  foodoc1
  foodoc2
  ...
  foodocX

Я хочу переместить (а не просто скопировать) все файлы .расширение txt в другую директорию c:textfiles.

Я хотел бы сделать это через командную строку (обычную, а не Powershell), возможно, в пакетном файле.

Я пробовал move команда, но она работает только с файлами в текущем каталоге. Я тоже пробовал xcopy, но это не удаляет файлы на источнике после того, как копия полный.

25
задан AngryHacker
06.02.2023 22:21 Количество просмотров материала 3474
Распечатать страницу

2 ответа

от: Как переместить все файлы с определенным расширением из всех подкаталогов в их родительские с помощью CMD?

эта команда будет копировать рекурсивно al pdf файлы из источника в цель каталог с помощью cmd в windows 7-протестирован и работает

for / r "c:\source_directory\" %%x in (*.pdf) переместить " %%x" "c:\target_directory\"

Читайте также:

windows-переместить все файлы из нескольких вложенных папок в родительскую папку-Super User

копировать несколько файлов из подпапок в одну папку-Microsoft Community

2
отвечен Win32Guy 2023-02-08 06:09

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
1
отвечен Hastur 2023-02-08 08:26

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх