2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 179
1

WinRar, архивация файлов каждый день с внутренним переименованием

19.02.2020, 13:39. Показов 980. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброго времени Суток. прошу разобраться в написании кода cmd,
для архивации файлов с определенными условиями а именно :

SQL
1
2
EXEC xp_cmdshell 'rar.exe a -df Z:\backups\All_Sunday.rar Z:\backups\001_Sunday.bak Z:\backups\002_Sunday.bak Z:\backups\003_Sunday.bak Z:\backups\004_Sunday.bak Z:\backups\005_Sunday.bak Z:\backups\006_Sunday.bak'
EXEC xp_cmdshell 'rar.exe a -df Z:\backups\All_Wednesday.rar Z:\backups\001_Wednesday.bak Z:\backups\002_Wednesday.bak Z:\backups\003_Wednesday.bak Z:\backups\004_Wednesday.bak Z:\backups\005_Wednesday.bak Z:\backups\006_Wednesday.bak'

Т.к Файлы удаляются, после архивации
необходимо произвести поиск , т.е Если в папке "Z:\backups" - будут файлы 001_Sunday и / или Mondey т.д

делаем архив, с именем этого дня 'All_Sunday.rar',
запихуем в него все файлы с "Sunday"

Z:\backups\001_Sunday.bak
Z:\backups\002_Sunday.bak
Z:\backups\003_Sunday.bak
Z:\backups\004_Sunday.bak
Z:\backups\005_Sunday.bak
Z:\backups\006_Sunday.bak

делаем архив, с именем этого дня 'All_Sunday.rar',
запихуем в него все файлы с "Sunday"
переименовать файлы внутри архива после упаковки ли-бо во время упаковки..
убрать (_Sunday) оставив только 001.bak
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2020, 13:39
Ответы с готовыми решениями:

Архивация группы файлов путем WinRar
Доброго времени суток. Есть макрос, который работает, но почему-то не делает архив, бьюсь уже...

Архивация папки ч/з WinRar
Привет! Есть следующий код. Не могу разобраться, нужно заархивировать папку, после архивации...

Архивация указанного файла в одноимённый архив с использованием WinRar
Здравствуйте! Помогите, пожалуйста. Необходимо создать bat файл, выполняющий архивирование...

Архивация папок с сохранением имени 7zip, winrar. Батник
С новым годом! Есть папка C:\test1. В ней будут появляться папки с разными названиями (к примеру...

7
2428 / 981 / 451
Регистрация: 29.05.2016
Сообщений: 4,250
19.02.2020, 14:42 2
Добрый день! Я правильно понимаю, что формат второй части имени файлов (после нижнего подчёркивания) Sunday, Mondey и т.д. ограничен лишь днями недели?
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 179
19.02.2020, 15:04  [ТС] 3
Цитата Сообщение от Karen87 Посмотреть сообщение
ограничен лишь днями недели?
да , именно так...

просто я точно вижу что это все можно упростить , чтобы не плодить отдельно для каждого дня...
0
2428 / 981 / 451
Регистрация: 29.05.2016
Сообщений: 4,250
20.02.2020, 11:29 4
Я вижу это так:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
setlocal enabledelayedexpansion
for %%i in (*.*) do (
    if not %%~xi==.bat (
        echo %%i>>list.txt
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Sunday (
        set /A counter1+=1
        if !counter1!==1 (
            mkdir Sunday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Sunday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Monday (
        set /A counter2+=1
        if !counter2!==1 (
            mkdir Monday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Monday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Tuesday (
        set /A counter3+=1
        if !counter3!==1 (
            mkdir Tuesday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Tuesday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Wednesday (
        set /A counter4+=1
        if !counter4!==1 (
            mkdir Wednesday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Wednesday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Thursday (
        set /A counter5+=1
        if !counter5!==1 (
            mkdir Thursday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Thursday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Friday (
        set /A counter6+=1
        if !counter6!==1 (
            mkdir Friday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Friday
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Saturday (
        set /A counter7+=1
        if !counter7!==1 (
            mkdir Saturday
        )
        for %%i in (*.*) do (
            ren %%a_%%b.%%c %%a.%%c & move %%a.%%c Saturday
        )
    )
)
for /d %%i in (*) do (
    "C:\Program Files\WinRAR\WinRAR.exe" a -df All_%%i.rar %%i
)
del list.txt
P.S. Батник должен лежать в Z:\backups
1
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 179
20.02.2020, 14:04  [ТС] 5
Цитата Сообщение от Karen87 Посмотреть сообщение
. Батник должен лежать в Z:\backups
Я проверю, мне путь не обязательно прописывать , я буду вызывать 'rar.exe'
с sql

xp_cmdshell и попробую этот кусок кода ща туда впихнуть
0
2428 / 981 / 451
Регистрация: 29.05.2016
Сообщений: 4,250
20.02.2020, 16:49 6
Цитата Сообщение от magarjoba Посмотреть сообщение
я буду вызывать 'rar.exe' с sql
Вы уж тогда вызывайте скрипт, потому что архивация вшита в него

Добавлено через 2 часа 26 минут
Нашёл ошибку в коде. Переделанный вариант:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
@echo off
setlocal enabledelayedexpansion
for %%i in (*.*) do (
    if not %%~xi==.bat (
        echo %%i>>list.txt
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Sunday (
        set /A counter1+=1
        if !counter1!==1 (
            mkdir Sunday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Sunday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Monday (
        set /A counter2+=1
        if !counter2!==1 (
            mkdir Monday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Monday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Tuesday (
        set /A counter3+=1
        if !counter3!==1 (
            mkdir Tuesday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Tuesday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Wednesday (
        set /A counter4+=1
        if !counter4!==1 (
            mkdir Wednesday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Wednesday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Thursday (
        set /A counter5+=1
        if !counter5!==1 (
            mkdir Thursday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Thursday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Friday (
        set /A counter6+=1
        if !counter6!==1 (
            mkdir Friday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Friday
            )
        )
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Saturday (
        set /A counter7+=1
        if !counter7!==1 (
            mkdir Saturday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Saturday
            )
        )
    )
)
for /d %%i in (*) do (
    "C:\Program Files\WinRAR\WinRAR.exe" a -df All_%%i.rar %%i
)
del list.txt
0
4332 / 2122 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
21.02.2020, 04:55 7
Цитата Сообщение от magarjoba Посмотреть сообщение
я точно вижу что это все можно упростить
Цитата Сообщение от Karen87 Посмотреть сообщение
вариант: ...
о да!
----------
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "d=Z:\backups"
 
pushd "%d%"
 for /f "tokens=1* delims=_" %%a in ('dir /a-d/b "*_*.bak"') do (
 7z.exe a "All_%%~nb.7z" "%%a_%%b"
 7z.exe rn "All_%%~nb.7z" "%%a_%%b" "%%a%%~xb"
)
popd
pause
1
2428 / 981 / 451
Регистрация: 29.05.2016
Сообщений: 4,250
21.02.2020, 08:52 8
Ещё одна модификация, думаю, что последняя:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
@echo off
setlocal enabledelayedexpansion
for %%i in (*.*) do (
    if not %%~xi==.bat (
        echo %%i>>list.txt
    )
)
for /f "tokens=1,2,3 delims=_." %%a in (list.txt) do (
    if /I %%b==Sunday (
        set /A counter1+=1
        if !counter1!==1 (
            mkdir Sunday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Sunday
            )
        )
    )
    if /I %%b==Monday (
        set /A counter2+=1
        if !counter2!==1 (
            mkdir Monday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Monday
            )
        )
    )
    if /I %%b==Tuesday (
        set /A counter3+=1
        if !counter3!==1 (
            mkdir Tuesday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Tuesday
            )
        )
    )
    if /I %%b==Wednesday (
        set /A counter4+=1
        if !counter4!==1 (
            mkdir Wednesday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Wednesday
            )
        )
    )
    if /I %%b==Thursday (
        set /A counter5+=1
        if !counter5!==1 (
            mkdir Thursday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Thursday
            )
        )
    )
    if /I %%b==Friday (
        set /A counter6+=1
        if !counter6!==1 (
            mkdir Friday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Friday
            )
        )
    )
    if /I %%b==Saturday (
        set /A counter7+=1
        if !counter7!==1 (
            mkdir Saturday
        )
        for %%i in (*.*) do (
            if %%i==%%a_%%b.%%c (
                ren %%i %%a.%%c & move %%a.%%c Saturday
            )
        )
    )
)
for /d %%i in (*) do (
    "C:\Program Files\WinRAR\WinRAR.exe" a -df All_%%i.rar %%i
)
del list.txt
pause
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2020, 08:52
Помогаю со студенческими работами здесь

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

Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и...

Копирование с переименованием файлов
Необходимо в определенной папке найти файлы с именем avpki.log. Затем необходимо скопировать данные...

Распаковка архивов с переименованием файлов
Задача такая. Есть папка с архивами rar, zip, 7z. Нужно все архивы распаковать (без сохранения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru