Команда cmd для копирования в несколько папок.

Вопрос или проблема

Я хочу скопировать файл из одной папки в другую, в которой много подпапок. Использую командную строку. Как я могу скопировать этот файл во все подпапки?

Например, у меня есть файл под названием Test.txt. Я хочу скопировать этот файл в другую папку “Data”, в которой много подпапок ‘Data-1’, ‘Data-2’, ‘Data-3’ и так далее. Используя команду, я хочу скопировать этот текстовый файл во все эти подпапки одной командой.

@echo off
for /d /r "d:\folder 2" %%a in (*) do copy "d:\folder 1\test.txt" "%%a"

Используйте расширенную команду for

for /D %%f in ("%1\*") do copy "%2" "%%f\"

  • Первый аргумент — это каталог назначения
  • Второй аргумент — это копируемый файл

Предполагая, что под ‘MS-DOS’ вы имеете в виду командную строку Windows, используйте robocopy с переключателем /mir:

robocopy /mir <source> <destination>

для всех опций, которые может предложить этот инструмент, введите robocopy /?

Без ваших путей, команда будет выглядеть так:

for /d %I in ("C:\KData\Data-*") do copy "C:\Tfolder\Test.txt" "%I"

В случае, если ваша структура изменится на просто DataSomething и вам потребуется больше файлов Test для использования из того же места, команда немного изменится и будет работать в обоих случаях:

for /d %I in ("C:\KData\Data*") do copy "C:\Tfolder\Test*.txt" "%I"

И для забавного парня в комментариях, какую версию Windows вы используете? Повторение “нет /D” не сделает это более правдой. Попробуйте это, откройте cmd и вставьте:

for /? | find "/D"

.

Ответ или решение

Чтобы выполнить задачу копирования файла во все подкаталоги указанной директории с использованием командной строки в Windows, можно воспользоваться несколькими различными методами. Эти методы используют такие инструменты, как команды for и robocopy, которые предоставляют достаточно функционала для выполнения подобной задачи. Давайте подробно рассмотрим способы, которые помогут решить вашу задачу.

Теория

В теоретической части нам нужно понять, как команды Windows позволяют работать с файлами и папками. Команда for позволяет выполнять цикл по всем элементам, соответствующим заданному шаблону. В случае с подкаталогами, используя опцию /d, мы можем перебрать все подкаталоги в указанной директории.

Команда robocopy (сокращение от "Robust File Copy") – гораздо более мощный инструмент по сравнению с классическими командами copy или xcopy. Она специально разработана для надежного копирования, синхронизации и зеркального копирования целых директорий. Хотя robocopy используется чаще для больших операций резервного копирования, мы можем применить ее и в данном случае.

Пример

Подходящий простой скрипт на базе командной оболочки Windows будет выглядеть следующим образом:

  1. Копирование с использованием команды for:
@echo off
for /d %%I in ("C:\Data\Data-*") do (
    copy "C:\Source\Test.txt" "%%I"
)

Этот скрипт перебирает все директории, которые начинаются с "Data-" в папке "C:\Data" и копирует в каждую из них файл Test.txt из папки "C:\Source".

  1. Использование robocopy:

Хотя robocopy более подходит для копирования директорий, при необходимости его можно использовать так:

robocopy "C:\Source" "C:\Data" Test.txt /E

Эта команда копирует файл Test.txt из папки C:\Source в папку C:\Data, включая все подкаталоги.

Применение

Теперь рассмотрим, как данный скрипт может быть использован на практике, включая его конфигурацию под специфические задачи.

  1. Настройка путей и шаблонов:

    • Замените "C:\Data\Data-*" на реальный путь к вашей папке назначения. Вы можете использовать любые подстановочные знаки для поиска конкретных подкаталогов.
    • Замените "C:\Source\Test.txt" на путь к вашему файлу-источнику.
  2. Автоматизация процесса:

    • Чтобы сделать процесс автоматическим, скрипт можно сохранить как .bat файл и запускать его по расписанию с помощью задания в Планировщике задач Windows.
  3. Обработка ошибок:

    • Добавьте обработку возможных ошибок в ваш скрипт, например, с использованием условных операторов IF для проверки успешности копирования.
  4. Применение разных опций robocopy:

    • robocopy имеет множество опций, например /MIR для зеркального копирования или /MOV для перемещения. Ознакомьтесь с помощью robocopy /?, чтобы выбрать необходимые параметры для своих нужд.

Примечание: Всегда будьте осторожны при использовании команд, изменяющих файлы и директории, чтобы избежать случайной потери данных. Перед запуском на "боевых" данных рекомендуется тестировать команды на небольших объемах данных или использовать резервное копирование.

Оцените материал
Добавить комментарий

Капча загружается...