Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 29.07.2020
Сообщений: 42

BAT файл для копирования файлов по папкам из списка

16.06.2021, 14:05. Показов 2732. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день,

Есть файл list.xlsx – в котором,
столбец A – это наименование папки
столбец B – это наименование файла

Есть общий каталог, в котором содержатся папки, с наименованием из (столбца A) –
необходимо чтобы батник выполнял следующее,

при запуске из каталога с папками:
1. По порядку открывал папку из (столбца A) файла list.xlsx
2. Создавал новую папку с таким же наименованием + _tex doc / пример: CSNU9904460_tex doc
3. В новую папку ХХХХХХХХХХХ_tex doc - копировал файлы из (столбца B), которые лежат в отдельном каталоге по следующему пути: C:\Users\Documents\тех док.

Все файлы в формате (.pdf)
порядок заполнения файла такой, что столбец A построчно дублирует № папки,
но наименование файла, который нужно скопировать не повторяется.

оч. надеюсь на помощь!
заранее большое спасибо Всем!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2021, 14:05
Ответы с готовыми решениями:

BAT файл для копирования и перемещений файлов
Добрый день! Излазил весь сайт и не только этот, но никак не могу написать нормально bat файл для копирования и перемещения файлов.......

.bat для копирования, переноса и удаления файлов не работает
:: This .bat file allows you to copy/transfer files from one folder to another one and remove them. :: You have to pass path triples:...

BAT-файл для резервного копирования
Накидал бат для создания копии set h=%TIME:~0,2% set d=%TIME:~3,2% set s=%TIME:~6,2% set dd=%DATE:~0,2% set mm=%DATE:~3,2% set...

8
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.06.2021, 15:04
Vlad1792, здравствуйте! Принципиально, чтобы было в .xlsx или можно в .csv?
0
1 / 1 / 0
Регистрация: 29.07.2020
Сообщений: 42
16.06.2021, 15:06  [ТС]
Karen87, добрый день!

не принципиально, можно в (.csv) формате
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.06.2021, 15:46
Примерно так будет:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$file = "C:\script\list.xlsx";
$SheetName = "Лист3";
$Excel = New-Object -ComObject Excel.Application;
$Workbook = $Excel.workbooks.open($file);
$Worksheets = $Workbooks.worksheets;
$WorkSheet = $WorkBook.sheets.item($SheetName);
$MaxRows = ($WorkSheet.UsedRange.Rows).count;
$MaxColumns = ($WorkSheet.UsedRange.Columns).count;
$users=@();
for ($row = 2; $row -le $MaxRows; $row++) {
    $user = New-Object -TypeName PSObject;
    for ($col = 1; $col -le $MaxColumns; $col++) {
        $user | Add-Member -Name $WorkSheet.UsedRange.Cells(1,$col).Text -Value $WorkSheet.UsedRange.Cells($row,$col).Text -MemberType NoteProperty;
    }
    $users+=$user
}
$Excel.Quit();
foreach ($user in $users) {
    New-Item -Path "$($user.Container)\$($user.Container)_tex doc" -ItemType Directory
    Copy-Item "C:\Users\Documents\тех док\$($user.Material).pdf" "$($user.Container)\$($user.Container)_tex doc"
}
Примечание.
1) Написан скрипт на powershell. Если всё будет работать, то можно переделать в batch-скрипт
2) В первой строчке путь C:\script\list.xlsx меняете на свой
0
1 / 1 / 0
Регистрация: 29.07.2020
Сообщений: 42
16.06.2021, 16:40  [ТС]
Karen87, на powershell, дает такую ошибку...

не удается загрузить файл С:\ путь......
так как выполнение скриптов запрещено для данной системы

отключить запрет на выполнение скриптов не получилось, пробовал:
Code
1
Set-ExecutionPolicy Unrestricted
Code
1
Set-ExecutionPolicy RemoteSigned
возможно из за того что комп рабочий,
ошибка: отказано в доступе к разделу реестра ......

если не сильно затруднит, не могли бы переделать на batch-скрипт.

Заранее спасибо!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.06.2021, 17:03
Vlad1792, пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
powershell -executionpolicy bypass -command "$file='C:\script\list.xlsx';" ^
    "$SheetName='Лист3';" ^
    "$Excel=New-Object -ComObject Excel.Application;" ^
    "$Workbook=$Excel.workbooks.open($file);" ^
    "$WorkSheet=$WorkBook.sheets.item($SheetName);" ^
    "$MaxRows=($WorkSheet.UsedRange.Rows).count;" ^
    "$MaxColumns=($WorkSheet.UsedRange.Columns).count;" ^
    "$users=@();" ^
    "for ($row = 2; $row -le $MaxRows; $row++) {" ^
        "$user = New-Object -TypeName PSObject;" ^
        "for ($col = 1; $col -le $MaxColumns; $col++) {" ^
            "$user | Add-Member -Name $WorkSheet.UsedRange.Cells(1,$col).Text -Value $WorkSheet.UsedRange.Cells($row,$col).Text -MemberType NoteProperty;" ^
        "};" ^
        "$users+=$user" ^
    "};" ^
    "$Excel.Quit();" ^
    "foreach ($user in $users) {" ^
        "New-Item -Path """$($user.Container)\$($user.Container)_tex doc""" -ItemType Directory;" ^
        "Copy-Item """C:\Users\Documents\тех док\$($user.Material).pdf""" """$($user.Container)\$($user.Container)_tex doc""";" ^
    "}" ^
pause
exit
Примечание.
Код необходимо сохранить в кодировке OEM-866
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
17.06.2021, 09:19
Лучший ответ Сообщение было отмечено Vlad1792 как решение

Решение

С учётом проверки существования каталога:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@echo off
powershell -executionpolicy bypass -command "$file='C:\script\list.xlsx';" ^
    "$SheetName='Лист3';" ^
    "$Excel=New-Object -ComObject Excel.Application;" ^
    "$Workbook=$Excel.workbooks.open($file);" ^
    "$WorkSheet=$WorkBook.sheets.item($SheetName);" ^
    "$MaxRows=($WorkSheet.UsedRange.Rows).count;" ^
    "$MaxColumns=($WorkSheet.UsedRange.Columns).count;" ^
    "$users=@();" ^
    "for ($row = 2; $row -le $MaxRows; $row++) {" ^
        "$user = New-Object -TypeName PSObject;" ^
        "for ($col = 1; $col -le $MaxColumns; $col++) {" ^
            "$user | Add-Member -Name $WorkSheet.UsedRange.Cells(1,$col).Text -Value $WorkSheet.UsedRange.Cells($row,$col).Text -MemberType NoteProperty;" ^
        "};" ^
        "$users+=$user" ^
    "};" ^
    "$Excel.Quit();" ^
    "foreach ($user in $users) {" ^
        "if (test-path -PathType Container -path """$($user.Container)\$($user.Container)_tex doc""") {" ^
            "Copy-Item """C:\Users\Documents\тех док\$($user.Material).pdf""" """$($user.Container)\$($user.Container)_tex doc""";" ^
        "} else {" ^
            "New-Item -Path """$($user.Container)\$($user.Container)_tex doc""" -ItemType Directory;" ^
            "Copy-Item """C:\Users\Documents\тех док\$($user.Material).pdf""" """$($user.Container)\$($user.Container)_tex doc""";" ^
        "}" ^
    "}" ^
pause
exit
1
1 / 1 / 0
Регистрация: 29.07.2020
Сообщений: 42
18.06.2021, 17:00  [ТС]
Karen87, большое спасибо!
Все работает!!!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
18.06.2021, 17:22
Vlad1792, не за что
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2021, 17:22
Помогаю со студенческими работами здесь

Нужно написать bat на распределение файлов по папкам в сети
Всем привет! Нужен bat который будет из папки Backup распределять файлы по другим папкам (расположенным уже в сети) в зависимости от их...

Написать bat и задать два файла(1-для копирования. Во 2м находится список папок куда нужно скопировать первый файл)
Доброго времени суток. Помогите пожалуйста с задачей. Нужно написать bat, который будет копировать файл (например copied.txt) в папки,...

Пакетный файл для резервного копирования файлов
Создайте новый пакетный файл Пакетный файл, предназначенный для резервного копирования файлов системной папки Windows с...

Пакетный файл для копирования всех файлов
Разработать пакетный файл для копирования всех файлов документов (*.doc, *.txt) из всех студенческих подкаталогов в директорию «Мои...

BAT-файл для перемещения файлов
Всем привет))Имеется bat файл для перемещения файлов из одной папки в другую @Echo Off Set Otkuda= Set...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru