Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Whiteangel55
0 / 0 / 0
Регистрация: 17.11.2012
Сообщений: 1
1

Копирование файлов по маскам, записанным в текстовом файле

20.11.2012, 18:48. Просмотров 1937. Ответов 19
Метки нет (Все метки)

Доброе время суток, уважаемые.
Передо мной стоит следующая задача:
Есть каталог C:\forms.
В него ежедневно в подкаталоги, имя которых формируется по дате (ГГГГММДД, например 20121120) пишется куча файлов.
Есть файл, пусть будет myfile.txt, содержащий перечень масок файлов, которые необходимо периодически копировать, каждая маска в файле отдельной строкой, вот так:
s01099*
f091
f901.txt
Нужно при запуске батника вводить требуемую дату=имя каталога (ГГГГММДД, например 20121120) и выполнять копирование файлов, которые подпадают под маски из myfile.txt в отдельный каталог для дальнейших действий.
Каталог destination пусть будет c:\forms\obmen.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 18:48
Ответы с готовыми решениями:

Копирование файлов по списку в текстовом файле в папки с именами, соответствующими расширениям этих файлов
Добрый день, уважаемые форумчане. Прошу помощи с написанием bat-файла. Значит задача такая. Есть...

Копирование всех файлов, перечисленных в списке, содержащемся в текстовом файле, в заданную директорию
Здравствуйте! Помогите сделать лабу. Нужно сделать батник. Вот задание: 2)Создать командный...

Копирование из заданной директории в директорию, которая будет указана в текстовом файле
Доброго времени суток! Столкнулся с проблемой. Нужно выполнить копирование из заданной директории в...

Копирование заданного файла на все компьютеры в сети, IP-адреса которых находятся в списке в текстовом файле
Доброго времени суток. Требовалось создать *.bat файл, который осуществит копирование файла по всем...

Перенос файлов по содержимому, указанному в другом текстовом файле
Добрый день уважаемые! Прошу помочь в создании батника, который считывал бы первую, вторую и...

19
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
21.11.2012, 00:37 2
Вот эти два - они не являются маской. Это 2 конкретных файла.
Это так, на заметку.
Цитата Сообщение от Whiteangel55 Посмотреть сообщение
f091
f901.txt
Добавлено через 8 минут
Не проверял:
Bash
1
2
3
4
5
6
7
8
@echo off
Set From=C:\forms
Set Dest=c:\forms\obmen
Set MaskFile=c:\forms\myfile.txt
set /p Dat="Enter the Date: "
for /f "usebackq delims=" %%A in ("%MaskFile%") do (
  copy "%From%\%Dat%\%%A" "%Dest%\"
)
2
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
02.01.2018, 20:48 3
Dragokas, дорого времени суток.

Пытался видоизменить ваш код под свои нужды, но так как я не программист, а в коде разбираюсь чисто интуитивно, прошу мне подсказать:

Bash
1
2
3
4
5
6
7
@echo off
Set From=Z:\test
Set Dest=c:\New_photo
Set MaskFile=c:\New_photo\myfile.txt
for /f "usebackq delims=" %%A in ("%MaskFile%") do (
  copy "%From%\%%A" "%Dest%\"
)

Директория Z:\test имеет подпапки, как настроить поиск еще и в подпапках?
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
02.01.2018, 20:55 4
А куда файлы должны попадать - все в одну папку, или расбрасываться по такой же структуре каталогов, как в исходной папке?
И если в одну, то что делать, если имена файлов совпадут?
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
03.01.2018, 11:06 5
Dragokas, все должно попадать в одну папку. Если имена файлов совпадут, то можно пропустить такие файлы. А если не сложно в реализации, то в идеале забирать тот файл, который больше по весу (в основном будет проводиться сбор картинок, и хотелось бы забрать лучшего качества).

Заранее большое спасибо за вашу помощь!
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
03.01.2018, 19:25 6
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
28
@echo off
SetLocal EnableExtensions
 
Set From=Z:\test
Set Dest=c:\New_photo
Set MaskFile=c:\New_photo\myfile.txt
 
if not exist "%Dest%" md "%Dest%"
 
for /f "usebackq delims=" %%A in ("%MaskFile%") do (
  for /f "delims=" %%B in ('2^>NUL dir /b /s /a-d "%From%\%%A*"') do (
    set "doCopy="
    if exist "%Dest%\%%~nxB" (
      call :isBigger "%%B" "%Dest%\%%~nxB" && set doCopy=true
    ) else (
      set doCopy=true
    )
    if Defined doCopy copy /y "%%B" "%dest%\%%~nxB"
  )
)
pause
goto :eof
 
:isBigger [_in_file_1] [_in_file_2]
  for %%a in ("%~1") do set fsz1=%%~za
  for %%a in ("%~2") do set fsz2=%%~za
  if %fsz1% LEQ %fsz2% exit /b 1
exit /b 0
Список масок myfile.txt не забудьте создать.
Одна на строку.
1
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
03.01.2018, 20:20 7
Dragokas, все вводные данные введены корректно (путь для поиска, путь куда, список масок), выбрасывает консоль на паузе...
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
03.01.2018, 20:41 8
Удалите echo off

Запустите Win + R, cmd

введите путь к батнику, ENTER

покажите скрин консоли.
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
04.01.2018, 11:00 9
Dragokas, на скрине папку назначения тоже захватил. Она пуста.
0
Миниатюры
Копирование файлов по маскам, записанным в текстовом файле  
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
04.01.2018, 14:32 10
@echo off не удалили.

Я не знаю, почему у вас не работает. У меня всё нормально копирует.

Добавлено через 2 минуты
Какие расширения файлов у вас. И какое содержимое файла myfile.txt ?
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
05.01.2018, 00:13 11
Dragokas, расширения *.jpg *.jpeg *.tif *.png, ссылку "откуда" писал Z:\test и Z:\test\ (это сетевая папка). "Куда" тоже указывал с обратным слешем и без в конце пути. Файл запускал из консоли, в файле был удален @echo off
OС win 10 корпоративная x64, версия 1709, сборка ОС 16299:125

Все содержимое попытался уместить на снимке экрана

Очень жаль, что не работает ваш вариант у меня.
0
Миниатюры
Копирование файлов по маскам, записанным в текстовом файле  
alpap
1885 / 1382 / 456
Регистрация: 26.04.2015
Сообщений: 4,689
05.01.2018, 01:05 12
Цитата Сообщение от VitaliyGodlevsk Посмотреть сообщение
не работает ваш вариант у меня
неудивительно, вот что получается в вашем случае:
Windows Batch file
1
2
3
4
5
6
7
...
Set From=Z:\test\
Set MaskFile=c:\New_photo\myfile.txt &: [Содержимое "myfile.txt": 528*]
 
for /f "usebackq delims=" %%A in ("c:\New_photo\myfile.txt") do (
  for /f "delims=" %%B in ('2^>NUL dir /b /s /a-d "Z:\test\\528**"') do (
...
Добавлено через 45 секунд
Цитата Сообщение от VitaliyGodlevsk Посмотреть сообщение
не работает ваш вариант у меня
неудивительно, вот что получается в вашем случае:
Windows Batch file
1
2
3
4
5
6
7
...
Set From=Z:\test\
Set MaskFile=c:\New_photo\myfile.txt &: [Содержимое "myfile.txt": 528*]
 
for /f "usebackq delims=" %%A in ("c:\New_photo\myfile.txt") do (
  for /f "delims=" %%B in ('2^>NUL dir /b /s /a-d "Z:\test\\528**"') do (
...
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
05.01.2018, 01:11 13
alpap, да, я делал 4 варианта со слешами и без в путях папок откуда и куда и ни один не сработал...
0
alpap
1885 / 1382 / 456
Регистрация: 26.04.2015
Сообщений: 4,689
05.01.2018, 01:23 14
VitaliyGodlevsk,
да вообще и так даже работает - не знаю что вы там делаете
Копирование файлов по маскам, записанным в текстовом файле
0
alpap
1885 / 1382 / 456
Регистрация: 26.04.2015
Сообщений: 4,689
05.01.2018, 01:32 15
или на полном:
Копирование файлов по маскам, записанным в текстовом файле
1
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
05.01.2018, 01:41 16
VitaliyGodlevsk, не знаю, что вы там удаляли, но скрин командной строки строки, который вы присылали, точно запущен в режиме сокрытия списка исполняемых команд.

Добавлено через 1 минуту
Попробуйте потестировать без сетевой папки. Может, она у вас недоступна или ещё что.
У других людей ведь всё работает.
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
05.01.2018, 14:04 17
alpap, Dragokas, спасибо огромнейшее вам! Все работает.
Файл myfile.txt был, скорее всего, в кодировке UTF-8, пересохранил в кодировке ANSI и все заработало.

P.S. Когда в батнике удалял строку @echo off не отображалось действие в консоли, переписал начало на @echo on и смог увидеть "крякозябры" в файле масок.
0
volodin661
Заблокирован
05.01.2018, 14:13 18
PowerShell
1
dir  20121120\* -Include (gc myfiles.txt) | Copy -Destination c:\obmen
0
VitaliyGodlevsk
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 12
05.01.2018, 14:15 19
Два снимка как было и как стало после исправления кодировки. Может кому-то когда-то пригодится.
0
Миниатюры
Копирование файлов по маскам, записанным в текстовом файле   Копирование файлов по маскам, записанным в текстовом файле  
alpap
05.01.2018, 14:28     Копирование файлов по маскам, записанным в текстовом файле
  #20

Не по теме:

volodin661,
не, это другой посетитель, не из шапки 2012, свежее.

0
05.01.2018, 14:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2018, 14:28
Привет! Вот еще темы с ответами:

Создание файлов с именами, взятыми из списка в текстовом файле, и с заданным содержимым
Добрый день. Нужна помощь в создании файла из списка. Что нужно: Из списка создается "папка" в...

Копирование файлов по сети на компьютеры, указанные в файле
Есть такой батник. Но как сделать чтоб он копировал файл по сети на компьютеры указанные в файле...

Удаление файлов по нескольким маскам из нескольких каталогов
Помогите со скриптом. Задача следующая. Имеется некая программа к которой подключены базы данных....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru