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

Батник для копирования только новых файлов

15.10.2013, 22:28. Показов 25040. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Помогите плиз в написании батника для копирования новых файлов.
Суть в чём, нужно из директории, куда складывается периодически новый билд приложения, копировать на другой ресурс. Это папка с вложенными каталогами, причём нужно обязательно копировать вложенный каталог (eng) в этом билде., то есть например - папка c билдом 8.0.0.1\rec\eng

Накидал такой сценарий:

Bash
1
2
3
md c:\temp
net use z: \\192.168.1.30\Temp
Forfiles /P Z: /D 0 /S /M eng /C "Cmd /C if @isdir==TRUE xcopy /S /I @file\* c:\temp\@file"
Дело в том, что данный батник подходит только если совпадает дата каталога с текущей датой. Но билды выходят не каждый день и дата совпадать не будет. Изменение ключа /D на +1 не решает проблему и это не удобно постоянно изменять батник. НУжно чтобы копировалась постоянно именно папка с последней версией, даже если даты различаются.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2013, 22:28
Ответы с готовыми решениями:

Батник для копирования и удаления определенных файлов
Всем привет! Задача такая. Есть папка на диске С куда падают файлы разных мастей, в то же время в ней же лежат файлы которые переносить...

Батник копирования файлов по первым 28 символам в позициях списка
Добрый день всем, вопрос к профессионалам этого ресурса. +1000 к вашей карме ! Нужно создать батник, который из папки...

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

15
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.10.2013, 23:34
Bash
1
xcopy /SIM "папка_1" "папка_2"
/M Копирование только файлов с установленным архивным атрибутом;
после копирования атрибут снимается.
Добавлено через 2 минуты
... имя папки, говорите, меняется...

Добавлено через 4 минуты
Тогда текстовое сравнение оператором GTR использовать:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
set src=c:\projects
set dest=c:\last
 
: поиск папки с последним билдом
set Prev=0
for /F %%? in ('dir /B /Ad "8.*"') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%" "%dest%"
pause
1
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
16.10.2013, 00:24  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
%%?
Скажите, а что нужно указывать в качестве данных переменных?
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
16.10.2013, 00:36
Цитата Сообщение от NickMur Посмотреть сообщение
Скажите, а что нужно указывать в качестве данных переменных?
Ничего не нужно указывать.
%%? по сути тоже самое, что и %%a, %%A, и т.д.
1
16.10.2013, 00:43

Не по теме:

ммм. Пора завязывать с этой привычкой. А то никому не понятно.

1
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
16.10.2013, 00:49  [ТС]
Цитата Сообщение от sov44 Посмотреть сообщение
%%?
Спасибо я понял, любой символ это))

Цитата Сообщение от Dragokas Посмотреть сообщение
Prev=0
Единственно не понятно это значение, если оно находится в 0, то что должно происходить?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
16.10.2013, 01:11
Когда цикл запускается в первый раз ему с чем-то нужно сравнивать. С пустой переменной нельзя - будет синтакс. ошибка и "вылет".
1
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
17.10.2013, 00:56  [ТС]
Ребят спасибо за помощь, но не получается.
К сожалению таким сценарием не получается скопировать последнюю директорию из источника, пишется что файл не найден.

Переделал сценарий на:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
set src=V:\
set dest=c:\last
 
: поиск папки с последним билдом
set Prev=0
for /F "usebackq delims==" %%? in ('dir /B /Ad %src%') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%" "%dest%"
pause
Пишет, что путь не найден.
Что не так, не понимаю

Добавлено через 4 часа 6 минут
Получилось скопировать, когда я ключ /S добавил после Dir:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
set src=c:\projects
set dest=c:\last
 
: поиск папки с последним билдом
set Prev=0
for /F %%? in ('dir /B /Ad "8.*"') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%" "%dest%"
pause
Только как теперь скопировать директорию, которая находится в папке с версией билда 8.0.0.1 к примеру, то есть например 8.0.0.1\dir1\dir2, может добавить ключик к Dir, только вот какой. По маске типа 8.*\dir1\dir2 не копируется

Добавлено через 2 часа 33 минуты
есть у кого-нибудь догадки?

Добавлено через 6 минут
Всё, всем спасибо за основу, допилил сам!!!

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
Set DIR=folder
set src=Z:\
set dest=c:\test
 
: поиск папки с последним билдом
set Prev=0
for /F %%? in ('dir /B /S /Ad "z:\%DIR%"') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%" "%dest%"
pause
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
17.10.2013, 00:56
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
set src=V:
set dest=c:\last
 
:: поиск папки с последним билдом
set Prev=0
for /F %%? in ('dir /B /Ad "%src%\8.*"') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%\rec\eng" "%dest%\rec\eng"
pause
1
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
17.10.2013, 00:59  [ТС]
Dragokas,
Спасибо тебе большое за помощь, реально помогло, я присвоил ещё одну переменную DIR=folder, теперь всё работает как надо!
0
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
29.10.2013, 22:45  [ТС]
Добрый вечер!

Задачка усложняется тем, что теперь нужно вместо каталога искать файлы.
Имеется такой путь: с:\test\folder1\folder2\
В данном каталоге содержатся ещё ряд каталогов, например вид такой:
с:\test\folder1\folder2\45-87-88-H1
с:\test\folder1\folder2\46-78-99-K4
с:\test\folder1\folder2\65-66-78-0F
В данных каталогах имеются везде одинаковые файлы.

Что нужно поменять в батнике, чтобы был поиск только по последней папке с файлами, при этом копировались все файлы только из последнего каталога, например всё складировалось в с:\test\folder1\folderNEW

Хочу заметить, что папки постоянно меняются в названии, поэтому для названия переменной онт не подходят.


Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
Set DIR=folder2
set src=Z:\
set dest=с:\test\folder1\folderNEW
 
: поиск папки с последним билдом
set Prev=0
for /F %%? in ('dir /B /S /Ad "%src%%DIR%"') do if %%? GTR !Prev! set Prev=%%?
 
xcopy /C /E /H /R /Y /I /K "%Prev%" "%dest%"
pause
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.10.2013, 23:06
Цитата Сообщение от NickMur Посмотреть сообщение
при этом копировались все файлы только из последнего каталога,
Из последнего каталога последней папки?
И как он сейчас фактически называется?
0
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
30.10.2013, 23:53  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Из последнего каталога последней папки?
Да, именно, но имя каталога постоянно разное, то есть основное условие это поиск последнего по дате каталога, но не копировать сам каталог, а только содержимое его, то есть все все файлы.

Цитата Сообщение от Dragokas Посмотреть сообщение
И как он сейчас фактически называется?
К примеру имеем имя каталога "65-66-78-0F", по пути: с:\test\folder1\folder2\65-66-78-0F


У нас сейчас батник ищет папку folder2
Цитата Сообщение от NickMur Посмотреть сообщение
Set DIR=folder2
, но в этой папке может быть куча разных папок:

с:\test\folder1\folder1\45-66-88-H1
с:\test\folder1\folder1\45-55-88-H1
с:\test\folder1\folder1\45-77-88-H1
с:\test\folder1\folder2\45-87-88-H1
с:\test\folder1\folder2\46-78-99-K4
с:\test\folder1\folder2\65-66-78-0F
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
31.10.2013, 00:51
То есть нужно искать среди папок folder последнюю. Потом в ней среди папок xx-xx-xx-xx опять последнюю.
И уже ее содержимое копировать в с:\test\folder1\folderNEW
Я правильно понимаю?
0
1 / 1 / 1
Регистрация: 15.10.2013
Сообщений: 60
31.10.2013, 10:56  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
То есть нужно искать среди папок folder последнюю. Потом в ней среди папок xx-xx-xx-xx опять последнюю.
И уже ее содержимое копировать в с:\test\folder1\folderNEW
Я правильно понимаю?
Да, совершенно верно :-)
0
01.11.2013, 05:42

Не по теме:

NickMur, напоминайте еще... пока некогда Вам помочь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2013, 05:42
Помогаю со студенческими работами здесь

Не работает скрипт резервного копирования для новых файлов
find . -type f -mtime -10 -print0 | xargs -0 tar -cjf archive.tar.bz2 Не пашет на рабочем проект (добавилось порядка 2к картинок) -...

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

Надо создать батник для копирования папки в папку с заменой
Помогите создать BAT для копирования папки в папку с заменой Есть Папка1 и Папка2 Надо копировать Папку1 и вставить ее в Папку2 с...

Программа или батник для копирования какой-либо папки из Application Data
Здравствуйте! Мне нужно создать программу или батник чтобы копировалась какая-либо папка находящаяся в папке application data, если имя...

Скачивание только новых файлов
Очень нужна ваша помощь, пишу простенький ftp-шник, который только скачивает новые файлы. Новые файлы - это те которых нет в локальное...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru