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

Проверка наличия файлов для каждого дня месяца и копирование недостающих

21.12.2015, 12:33. Показов 2204. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, есть такая ситуация,в папках содержаться архивы формата 2015-01-01-имя.7z, так нужно написать батник который проверяет есть ли файлы за период от 2015-01-01 до 2015-01-31 , если нет то скопировать с недостающим числом, желательно что бы пути к папке указывались из тхт, буду очень благодарен за идеи
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2015, 12:33
Ответы с готовыми решениями:

Копирование файлов из папок за 1,10,20 число каждого месяца
Доброго времени суток. Есть папка Backup с подпапками, в которых хрняться бекапы разных баз. Backup Dakor ...

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

Проверка наличия трёх текстовых файлов на диске и объединение их в один файл в случае существования каждого
Проверка наличия трех текстовых файлов на диске и объединения их в один файл. Как сие воплотить? :sorry:

10
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
21.12.2015, 16:58
Проверять по дате изменения или по дате в имени - первое. Второе, в папке один архив или несколько подобных. Третье - копировать недостающие в отдельную папку или куда...? Распишите алгоритм того что хотите.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 27
21.12.2015, 17:07  [ТС]
alpap, проверять по дате в имени , в папке за год таких архивов, копировать в туже папку где остальные архивы, прошу прощения что сразу не изложил более подробно
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
21.12.2015, 19:19
Цитата Сообщение от hammer156 Посмотреть сообщение
в папке за год таких архивов, копировать в туже папку где остальные архивы
ну ни грамма не понял из этого.
Цитата Сообщение от hammer156 Посмотреть сообщение
в папках содержаться архивы формата 2015-01-01-имя.7z
- один архив в папке и их по числу дней в месяце с именем архива или папка1 с архивами 1-31, папка2 с архивами 1-31 и т.д.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 27
22.12.2015, 10:15  [ТС]
Да в папках, тоесть в скажем в архив-1с 1-31 в папке документы 1-31 и так далее, все как бы просто, к примеру у нас в папке архив-1с есть 27-28 число а за 29-30 нету, вот мне нужно сделать копию 28 числа и переименовать ее в 29 и 30 число, запутанно задачу поставили если честно сам голову ломаю не один день.

Добавлено через 6 минут
я так понимаю что упор идет на то,нет архива за 13-14 за выходные как мне сказали, а есть за 12 (пятница) так вот нужно сделать просто копию из архива за 12 число, если сегодня 15 число (понедельник)
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.12.2015, 10:32
hammer156,
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
@echo off
SetLocal EnableDelayedExpansion
set "MM=%date:~3,2%"
set "kd=31"
set n=0
if %MM%==02 set "kd=28"
for %%a in (04 06 09 11) do if %MM%==%%~a set "kd=30"
for /f "usebackq delims=" %%B in ("%Userprofile%\Desktop\file.txt") do (
 for /f "tokens=1-4 delims=-" %%i in ('dir /a-d /b /s /o-n "%%~B"') do (
  set /a n+=1
  set "d=%%~k"
  set "ndf!n!=%%~i-%%~j-!d!-%%~l"
  call :zp "%%ndf!n!%%"
))
goto :eof
:zp
 for /l %%b in (1 1 %kd%) do (
  set "ns=%%~b"
  if !ns! leq 9 set "ns=0!ns!"
  if not exist "%%~i-%%~j-!ns!-%%~l" copy "%~1" "%%~i-%%~j-!ns!-%%~l"
)
pause>nul
В файле "file.txt" должны быть указаны полные пути к папкам с архивами, одна строчка - один путь, сам файл "file.txt" сейчас на рабочем столе (можно поменять конечно).
Минусы:
1. Проверку на високосный год я не делал, в феврале (месяце "2") будет всегда 28 дней (файлов) - лень
2. В названии архивов ИМЯ (2015-01-01-ИМЯ.7z) должно быть везде одинаковым в пределах папки, иначе будет бардак
3. Информация для копирования будет использоваться из самого последнего (максимального по дате) архива - это и логично, но если не будет архива 2015-01-15 и 2015-01-25 их оба заменит архив 2015-01-26
Именно поэтому это совершенно неправильный подход к задаче. Сейчас полно средств для архивирования и без участия оператора и при этом заниматься замыливанием глаз кому-то...
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 27
23.12.2015, 15:25  [ТС]
Спасибо большое все работает, но есть одно маленькое но, скрипт отрабатывает и делает копий на целый мецяс в перед
А мне нужно что бы выполнялся до текущей даты
реально ли это сделать? тоесть если в архивной папке 10 файлов с 1 по 10 число, а сегодня 13 он просто делает 3 копии и все!
Буду очень благодарен
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.12.2015, 23:11
Лучший ответ Сообщение было отмечено hammer156 как решение

Решение

hammer156, А если сегодня 27 февраля ему делать еще 3 или 4 копии, т.е. надо еще проверку по дате делать, тогда уже лучше на powershell это делать и работать именно с датами файлов, а не цифрами в имени, я думал что это требуется когда месяц закончился и там чего-то не хватает и надо отчитаться, а зачем надо то что надо Вам - ума не приложу. Попробуйте поговорить с теми кто поставил такую дебил..ю задачу, судя по тому что вижу уже как минимум три архива просто в копиях, может достаточно одного в конце месяца?

Добавлено через 1 час 8 минут
hammer156, Ловите:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo on
SetLocal EnableDelayedExpansion
set n=0
for /f "usebackq delims=" %%a in ("%Userprofile%\Desktop\file.txt") do (
 for /f "tokens=1-4 delims=-" %%i in ('dir /a-d /b /s /o-n "%%~a"') do (
  set /a n+=1
  set "ndf!n!=%%~i-%%~j-%%~k-%%~l"
  call :zp "%%ndf!n!%%"
))
goto :eof
:zp
 for /l %%b in (1 1 %date:~0,2%) do (
  set "ns=%%~b"
  if !ns! leq 9 set "ns=0!ns!"
  if not exist "%%~i-%%~j-!ns!-%%~l" copy "%~1" "%%~i-%%~j-!ns!-%%~l"
)
pause>nul
.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 27
24.12.2015, 11:24  [ТС]
alpap, спасибо большое, в очередной раз выручили меня, да я согласен с вами я тоже не понимаю зачем это нужно, но увы с начальством сложно спорить
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 27
22.08.2016, 15:27  [ТС]
alpap, могу я к вам обратиться за помощью вновь
Можите помочь с вашим скриптом
Он хорошо работает, но как оказалось я не могу вызвать другой скрипт
Я указываю

Windows Batch file
1
2
3
4
set rotate=%~dp0Rotate.bat
echo "%cd%">"%in%"
 
call %rotate%>nul
И другой скрипт отрабатывает в середине работы скрипта на копирование, и получается так что идет копирование он докопирует то что необходимо, потом в вызывается ротация ротирует, а копирование не остановилось и архив вновь появился, и ротация не выполняется

Добавлено через 9 минут
Не знаю насколько это правильно, но решил проблему с помощью команды
start /wait
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.08.2016, 01:34
ну и слава богу, потому что из написанного вами я в очередной раз совершенно ни грамма ни на йоту ничегошеньки не понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2016, 01:34
Помогаю со студенческими работами здесь

Что делать, если значение сегодняшнего дня(месяца) меньше значения дня(месяца) введных пользователем?
#include <iostream> #include <ctime> using namespace std; int main() { time_t t = time(NULL); // äëÿ âû÷èñëåíèÿ...

По магазину известна выручка каждого дня месяца
По магазину известна выручка каждого дня месяца. Распечатать самые "не благоприятные" дни месяца для данного магазина. Заранее...

Проверка наличия файлов
Необходимо проверить наличие файлов в папке. for i:=1 to kp-1 do begin if not Fileexists(names) then begin ...

Проверка наличия файлов
С помощью каких функций или процедур можно программно проверить на наличие файлов. К примеру такой последовательности: Запуск проги -...

Проверка наличия файлов
Помогите написать код!) Вот задание: Проверка наличия на диске в каталоге, указанном первым параметром КФ, файла FNames.txt,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru