|
Как в CMD получить номер архива 1...N по дате | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
08.12.22
✎
20:22
|
Т.е. какой то универсальный алгоритм, чтобы давал отсаток от деления номера дня от 1 января 2000 года (например) на N
|
|||
1
Garykom
гуру
08.12.22
✎
20:35
|
||||
2
Гений 1С
гуру
08.12.22
✎
20:43
|
(1) не нашел там похожей темы, спс
|
|||
3
Сергиус
08.12.22
✎
20:53
|
(0)Почему именно от 1 января 2000 года? какое-то у тебя специфическое требование)
|
|||
4
Гений 1С
гуру
08.12.22
✎
21:10
|
(3) да мне от любой даты, там в скобках написано же (например)
|
|||
5
Garykom
гуру
08.12.22
✎
21:12
|
||||
6
Asmody
08.12.22
✎
21:21
|
Я бы посоветовал Powershell, onescript или даже 1С:Исполнитель, но боюсь, не в коня корм
|
|||
7
Сергиус
08.12.22
✎
23:27
|
(4)Ты бы еще объяснил, для чего это нужно..может и вариантов больше станет)
|
|||
8
НафНаф
09.12.22
✎
07:30
|
(7) он хочет по номеру дня недели определять номер архива
|
|||
9
NorthWind
09.12.22
✎
07:30
|
(0) а зачем BAT-то обязательно? Есть же более человеческие языки, ладно пайтон, его ставить надо, но VBS в винде стандартно присутствует с Win98 и до последних версий.
|
|||
10
NorthWind
09.12.22
✎
07:31
|
или это скрипт под MS-DOS? :)
|
|||
11
НафНаф
09.12.22
✎
07:34
|
(9) кстати, почему не пайтон? Гений же даже статью написал, как освоил https://habr.com/ru/post/700020/
|
|||
12
NorthWind
09.12.22
✎
08:48
|
(11) у пайтона все же есть пара минусов, которые в отдельных случаях могут оказаться существенными. Первый - он стандартно не входит в поставку той же винды, его нужно устанавливать. Это не всегда возможно. Второй - пайтон достаточно требователен к современным ОС. Например, на Windows XP удастся поставить только древнюю версию 3.4, которую еще надо найти и под которую уже не поднять некоторые библиотеки. Даже под Win7 совсем свежую версию уже не поставить.
|
|||
13
NorthWind
09.12.22
✎
08:49
|
Тогда как VBS есть на всем, начиная с Win98 или даже с Win95 OSR2, если мне память не изменяет.
|
|||
14
arsik
гуру
09.12.22
✎
08:57
|
(13) Сейчас на винде, в основном, повершелом срипты пишут. По современному, удобно, не надо извращаться с обработкой строк, тоже есть в любой винде.
Даже на линукс его завезли :) |
|||
15
Fedor-1971
09.12.22
✎
09:24
|
(0) Держи
разделили дату на составляющие: for /F "TOKENS=1,2,3 DELIMS=." %%a in ('Date /T') do (set day=%%a)&&(set mon=%%b)&&(set year=%%c) Дальше используем так: start rar a %hom%\1\nsi%day%-%mon%-%year% -r z:\base.nsi\*.* |
|||
16
Fedor-1971
09.12.22
✎
09:40
|
15+ если Date /T возвращает данные с днём, тогда чиним так:
set day=%day:~3,2% - это если есть ПТ 20.10.2006 set dt=%day%.%mon%.%year:~0,4% - для уверенности, что в год не попали лишние символы |
|||
17
НафНаф
09.12.22
✎
09:43
|
(12) а в DOS так вообще горе
|
|||
18
Fedor-1971
09.12.22
✎
09:48
|
(2) почитай из (1) "Попов А. Командная строка и сценарии Windows"
там описаны математические операции bat файлов типа: Set /A Nom = %%Dat + 1 (или как-то так, точно не помню) |
|||
19
Гений 1С
гуру
09.12.22
✎
09:49
|
(15) ты задачу то читал?
условно говоря если N = 5 то мне нужно чтобы каждый день архив нумеровался 1, 2, 3, 4, 5, 1, 2, 3, 4, 5... |
|||
20
НафНаф
09.12.22
✎
09:49
|
(18) фиксин? читать? книги? да не, бред какой-то
|
|||
21
Гений 1С
гуру
09.12.22
✎
09:49
|
(9) потому что скрипт на BAT уже написан и это просто.
|
|||
22
НафНаф
09.12.22
✎
09:50
|
(19) не смог в остатки от деления?
|
|||
23
Fedor-1971
09.12.22
✎
09:59
|
(19) Так ты хочешь получить архивы, типа:
ГГГГ-ММ-ДД-1.rar ГГГГ-ММ-ДД-2.rar ГГГГ-ММ-ДД-3.rar ГГГГ-ММ-ДД-4.rar ГГГГ-ММ-ДД-5.rar а если их будет больше, то затираем первый? |
|||
24
arsik
гуру
09.12.22
✎
10:16
|
(21) Ну так покажи скрипт.
|
|||
25
Fedor-1971
09.12.22
✎
10:25
|
(19) держи гений,
for /F "TOKENS=1,2,3 DELIMS=." %%a in ('Date /T') do (set day=%%a)&&(set mon=%%b)&&(set year=%%c) set year=%year:~0,4% и про буквы названия дня выясни и почисти IF NOT EXIST c:\NomerInDay.txt Echo 0000 > c:\NomerInDay.txt FOR %%f IN (c:\NomerInDay.txt) DO set Nom %%f set /A Nom=%Nom%+1 IF Nom == 5 set Nom=0 - возможно, проверять придётся на 0005 start rar nsi%year%-%mon%-%day%-%Nom% -r z:\base.nsi\*.* Echo %Nom% > c:\NomerInDay.txt Надеюсь, отладить справишься А то всё отнять и поделить, непонятно зачем |
|||
26
НафНаф
09.12.22
✎
11:29
|
(25) ждем теперь на хабре статью "Как я делил с остатком в CMD"
|
|||
27
Fedor-1971
09.12.22
✎
11:36
|
(26) ну, поизвращаться можно, только смысла на понюшку табака
По сути ТС нужен сохраняемый в файл счётчик, для обнуления счётчика просто удаляем файл Правда, ТС куда-то запропастился, наверно, пробует игрушку прикрутить к задаче |
|||
28
Гений 1С
гуру
09.12.22
✎
15:04
|
(25) спасибо за идею, можно вставить такой код
если дата = 1 января тогда 1 если дата = 2 января тогда 2 .... код пролетит быстро. А сам код сгенерить исходя из N Удобно, практично... Наверное, самое оптимальное решение. |
|||
29
Гений 1С
гуру
09.12.22
✎
15:04
|
(23) да, затираем
|
|||
30
Гений 1С
гуру
09.12.22
✎
15:04
|
цикличные архивы
|
|||
31
Гений 1С
гуру
09.12.22
✎
15:09
|
(28) можно даже оптимизировать чутка по методу двоичного деления определяем месяц, потом день внутри него.
|
|||
32
Fedor-1971
09.12.22
✎
15:14
|
(31) зачем? Придумаем проблему и будем героически её решать?
я же тебе разобрал текущую системную дату на день, месяц, год прямо в bat файле создавай каталоги по ним + внутри каждой даты присваивай номер архиву |
|||
33
Гений 1С
гуру
09.12.22
✎
15:22
|
(32) не понял суть решения, что такое NomerInDay.txt ???
|
|||
34
Новый1сник2
09.12.22
✎
16:15
|
(0) задача какая ? архивы создавать ?
|
|||
35
Fedor-1971
09.12.22
✎
16:18
|
(33) Это файл для хранения счётчика номеров архивов за конкретный день
|
|||
36
Гений 1С
гуру
09.12.22
✎
16:18
|
(34) с добрым утром. Да, нужен цикличный архив на N файлов
|
|||
37
Гений 1С
гуру
09.12.22
✎
16:18
|
(35) наперкуа? А если он навернется?
|
|||
38
Fedor-1971
09.12.22
✎
16:24
|
(37) Кто навернётся? файл создаётся при его отсутствии
Блин, тебе нужно создавать нумерованные архивы внутри каждой даты я тебе нарисовал как сохранить счётчик для архивов внутри дня Если очень нужно создавай иерархию 2022 12 1 2 .... 12 В каждом числе создавай свой счётчик архивов и нумеруй архивы с перзаписью повторяющихся |
|||
39
Гений 1С
гуру
09.12.22
✎
16:27
|
(38) мне не надо внутри дня и сохранять не надо. Есть дата, по ней определяется номер ахива. зачем усложнять?
|
|||
40
Гений 1С
гуру
09.12.22
✎
16:29
|
Вот как это выглядит в 1це:
|
|||
41
Fedor-1971
09.12.22
✎
16:31
|
38+ Создай bat файл и вместо создания архива делай
echo %Nom% > c:\arh+%Nom%.txt Отладишь создание нужного тебе количества файлов (40) За одну дату будет один архив? |
|||
42
Fedor-1971
09.12.22
✎
16:32
|
(40) на калькуляторе посчитай свою формулу.
У тебя за каждый день будет один архив, зачем тогда разводить огород? |
|||
43
Гений 1С
гуру
09.12.22
✎
16:37
|
(42) мне нужен цикличный архив, N архивов в году, а не 365 архивов в году, задача элементарная
|
|||
44
Гений 1С
гуру
09.12.22
✎
16:38
|
(41) а как %NOM% определять? В этом весь вопрос
|
|||
45
Fedor-1971
09.12.22
✎
16:40
|
(44) он сохраняется в файле и при каждом последующем запуске bat увеличивается на 1
ты (25) пробовал сделать? Очень похоже, что нет |
|||
46
Гений 1С
гуру
09.12.22
✎
16:44
|
(45) а на хрена? Если запустится дважды за один день, то будет лажа.
Решение малой кровью: set /A i=11%5 Где вместо 11 надо подставить число месяца 1-30, в принципе кроме перехода из месяца в месяц будет корректно работать. |
|||
47
Fedor-1971
09.12.22
✎
16:47
|
(46) чем не устраивает структура каталогов нужной глубины? Это совсем без крови
Архив 1 2 3 4 5 сначала чистим 5 через del 5\*.* потом move 4\*.* 5\ и так до 1 в 2 создаём в 1 новый архив |
|||
48
Fedor-1971
09.12.22
✎
16:50
|
47 Если ты запустишь два раза своё решение, ты тупо уделаешь текущий архив, что хуже, чем 2 штуки за один день
|
|||
49
bolobol
09.12.22
✎
16:56
|
(47) Самое толковое решение. Всегда понятно прям по имени - какой последний
|
|||
50
Гений 1С
гуру
09.12.22
✎
16:59
|
(47) (49) при запуске несколько раз за день нарушается цикличность. Мне такое претит
|
|||
51
Fedor-1971
09.12.22
✎
17:02
|
(49) Это каталоги, а в них может быть несколько архивов с разными наименованиями
С датой создания и с уникальным номером архива - если очень нужно Одно неудобство - нужно заходить в каталог (50) корче, тебе дали две удочки - лови рыбу. Сам выбери что тебе нужнее |
|||
52
Гений 1С
гуру
09.12.22
✎
17:04
|
(51) да я в принципе нашел решение малой кровью в (46), спасибо за на-водки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |