[Batch/CMD] Массовое копирование файлов из папки в папку по списку

Zarubiant

Участник
Сообщения
80
Реакции
0
нужен скрипт, копирующий все файлы из указанной папки, включая подпапки, в другую папку, по списку, при этом адрес списка запрашивается
 
нужен скрипт, копирующий все файлы из указанной папки, включая подпапки, в другую папку, по списку, при этом адрес списка запрашивается
Конечно, я могу помочь с написанием скрипта для копирования файлов из указанной папки в другую папку. Для начала, давайте уточним некоторые детали:

1. Вам нужно скопировать все файлы из указанной папки, включая файлы в подпапках?
2. Какой формат у списка файлов, который вы хотите использовать для указания файлов, которые нужно скопировать?
3. Вам нужно сохранить иерархию папок при копировании файлов или просто скопировать все файлы в одну папку?

Пожалуйста, уточните эти детали, чтобы я мог предоставить более точный и полезный ответ.
 
ты меня не так понял. Список ведется не файлов, а имена папок указаны в списке в файле. Иерархию сохранять не надо
 
ты меня не так понял. Список ведется не файлов, а имена папок указаны в списке в файле. Иерархию сохранять не надо
Понял, извините за недоразумение. Чтобы скопировать папки из списка в другую папку без сохранения иерархии, вам понадобится скрипт на языке программирования, таком как Python. Вот пример такого скрипта:

Python:
import os
import shutil

# Запросить адрес файла со списком папок
file_path = input("Введите адрес файла со списком папок: ")

# Запросить адрес итоговой папки
destination_folder = input("Введите адрес папки, в которую нужно скопировать файлы: ")

# Открыть файл со списком папок
with open(file_path, 'r') as file:
    # Прочитать список папок из файла
    folders = file.read().splitlines()

# Копирование файлов из каждой папки в итоговую папку
for folder in folders:
    folder_path = os.path.join(folder)
    files = os.listdir(folder_path)
    for file_name in files:
        file_path = os.path.join(folder_path, file_name)
        shutil.copy(file_path, destination_folder)

print("Копирование завершено.")

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

Убедитесь, что у вас установлен Python, и запустите этот скрипт, следуя инструкциям в комментариях.
 
итоговые папки тоже будут в виде списка, по типу:
X,Y
где X - папка-источник
Y - папка назначения
 
итоговые папки тоже будут в виде списка, по типу:
X,Y
где X - папка-источник
Y - папка назначения
Понял, вам нужно скопировать папки из списка, указывая как папку-источник, так и папку назначения. Вот обновленный пример скрипта на языке Python, который учитывает список и копирует папки в указанные места:

Python:
import os
import shutil

# Запросить адрес файла со списком папок и папок назначения
file_path = input("Введите адрес файла со списком папок и папок назначения: ")

# Открыть файл со списком папок и папок назначения
with open(file_path, 'r') as file:
    # Прочитать список папок и папок назначения из файла
    folders = file.read().splitlines()

# Копирование папок из каждой папки-источника в папку назначения
for folder_pair in folders:
    source_folder, destination_folder = folder_pair.split(',')
    shutil.copytree(source_folder, destination_folder)

print("Копирование завершено.")

В этом скрипте вы должны указать адрес файла, содержащего список папок и папок назначения в формате "папка-источник,папка-назначения" на каждой строке. Скрипт будет перебирать каждую пару папок, копировать содержимое папки-источника в папку назначения.

Убедитесь, что у вас установлен Python, и запустите этот скрипт, следуя инструкциям в комментариях.
 
это должен быть bat скрипт
Понял, вы хотите создать пакетный файл (.bat) для выполнения этой операции. Вот пример содержимого bat-скрипта, основанного на предыдущем коде на языке Python:

Код:
@echo off

set /p file_path=Введите адрес файла со списком папок и папок назначения: 

for /f "tokens=1,2 delims=," %%a in (%file_path%) do (
    robocopy "%%a" "%%b" /E
)

echo Копирование завершено.

Сохраните этот код в текстовом файле с расширением .bat (например, copy_folders.bat). Затем запустите файл .bat и следуйте инструкциям, чтобы ввести адрес файла со списком папок и папок назначения.

Этот bat-скрипт использует команду robocopy, встроенную в Windows, для копирования папок и их содержимого. Он перебирает каждую пару папок из списка и выполняет команду robocopy для копирования содержимого папки-источника в папку назначения.

Убедитесь, что у вас установлен Python и команда robocopy доступна в системной переменной PATH, чтобы скрипт работал должным образом.
 
cmd не поддерживает путь umc как исправить
Если вы столкнулись с проблемой, что команда robocopy не поддерживает путь, содержащий пробелы или специальные символы, вы можете обернуть пути в двойные кавычки в bat-скрипте. Вот обновленный пример bat-скрипта:

Код:
@echo off

set /p file_path=Введите адрес файла со списком папок и папок назначения: 

for /f "usebackq tokens=1,2 delims=," %%a in ("%file_path%") do (
    robocopy "%%~a" "%%~b" /E
)

echo Копирование завершено.

Обратите внимание на изменение в строке for /f. Мы добавили usebackq перед tokens=1,2 для использования обратных кавычек вокруг имени файла и обрабатываемого файла. Затем мы также добавили ~ перед переменными %%a и %%b, чтобы удалить кавычки из пути.

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