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

Разархивация и архивация файлов, осуществляемые с определёнными параметрами

29.08.2015, 02:52. Просмотров 4516. Ответов 44
Метки нет (Все метки)

Помогите пожалуйста с созданием двух BAT-файлов. По форуму искал. К сожалению ничего подходящего не нашел.

Есть дерево папок с файлами. Файлов несколько десятков тысяч.
В основном архивы zip, но встречаются и незаархивированные с разными расширениями. Очень редко архивы rar.
В каждом архиве только один файл.
Имена папок русские с пробелами. Имена файлов в основном также русские с пробелами. Часто достаточно длинные (как названия папок, так и файлов)

1. Нужен бат-файл, который разархивирует все файлы, начиная с указанной директории, с сохранением структуры поддиректорий, с удалением архивов, пропуская неархивированные.

2. Второй бат-файл, который заархивирует файлы с указанными расширениями в архивы zip (один архив = один файл) с удалением оригинальных файлов, конечно с сохранением всей структуры дерева папок.

Бат файлы желательно должны быть перемещаемыми.
Т.е. копируются рядом с нужным каталогом набирается что то типа

rununzip.bat "Основы китайского языка. Задоенко"
Все архивы (zip, rar) в папке и подпапках /"Основы китайского языка. Задоенко" будут разархивированы в те же подпапки, а сами архивы удалены.

runzip.bat "Основы китайского языка. Задоенко"
Файлы с указанными внутри батника расширениями (например txt и bmp) в папке и подпапках /"Основы китайского языка. Задоенко" будут заархивированы с максимальным сжатием в архивы zip с теми же именами, а оригиналы удалены.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2015, 02:52
Ответы с готовыми решениями:

Создание bat файла с определёнными параметрами
Помогите создать батник. Помогите пожалуйста Указания к работе: во всех...

Написать батник, который будет запускать Avast с определёнными параметрами и ключами
Добрый день! Идея состоит в том, чтобы написать батник, который будет заходить...

Очистка рабочего стола от всех файлов, кроме файлов с определёнными расширениями
Добрый день. Помогите написать скрипт для очистки определенных папок (Рабочий...

Копирование файлов с определёнными условиями
Здравствуйте! Подскажите пожалуйста как выполнить это в командной строке:...

Подсчёт и удаление файлов с определёнными расширениями
Здрасте) Помоги пожалуйста с заданием. Вообще с батниками как то не...

44
Nik782
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 20
02.09.2015, 10:05  [ТС] 41
sov44, да, спасибо. Сделал пока так.
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
@echo off
Setlocal EnableDelayedExpansion
 
set "in=c:\1\книги"
set "log=c:\1\книги\my_log.txt"
set "file=%~1"
set "make=%~2"
set /a countp=0
set /a countu=0
 
if exist "%log%" goto go
@echo "Лог создан" %date% %time%>"%log%"
:go
 
if /i "%make%"=="p" goto pack
if /i "%make%"=="u" goto unpack
if /i "%make%"=="a" goto all
Echo Не правильно сделан выбор задания
pause>nul
exit /b
 
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
rem вывод порядкового номера в логе удалил
rem set /a n+=1
rem >>"%log%" Echo. !n! + %%a\%%b
>>"%log%" Echo. + %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))))) else (echo Директория не найдена)
)
>>"%log%" Echo. Упаковано - %countp%
echo Упаковано - %countp%
pause >nul
exit /b
            
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
rem вывод порядкового номера в логе удалил
rem set /a n+=1
rem >>"%log%" Echo. !n! - %%a\%%b
>>"%log%" Echo. - %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (echo Директория не найдена)
)
>>"%log%" Echo. Распаковано - %countu%
echo Распаковано - %countu%
pause >nul
exit /b
 
 
:all 
>>"%log%" Echo. %date% %time% Старт упаковки и распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. !n! + %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))) else (
>>"%log%" Echo.  !n! - %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (echo Директория не найдена)
)
>>"%log%" Echo. Распаковано - %countu%
>>"%log%" Echo. Упаковано - %countp%
echo Распаковано - %countu%
echo Упаковано - %countp%
pause >nul
exit /b
Какую интересную штуку еашел. Сейчас попробую реализовать, потом отпишусь )))

Добавлено через 1 час 29 минут
уфф...
Не знаете, как заставить его написать по русскими буквами на экране вместо Unpacking Packing ?
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
@echo off
@ "c:\Program Files (x86)\cmdow-1.4.8\bin\Release"\cmdow @ /HID
 
Setlocal EnableDelayedExpansion
 
set "in=c:\1\книги"
set "log=c:\1\книги\my_log.txt"
set "file=%~1"
set "make=%~2"
set /a countp=0
set /a countu=0
 
if exist "%log%" goto go
@echo "Лог создан" %date% %time%>"%log%"
:go
 
if /i "%make%"=="p" goto pack
if /i "%make%"=="u" goto unpack
if /i "%make%"=="a" goto all
Echo Не правильно сделан выбор задания
pause>nul
exit /b
 
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
set /a n+=1
>>"%log%" Echo. !n! + %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))))) else (echo Директория не найдена)
)
>>"%log%" Echo. Упаковано - %countp%
goto end
            
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
set /a n+=1
>>"%log%" Echo. !n! - %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (echo Директория не найдена)
)
>>"%log%" Echo. Распаковано - %countu%
goto end
 
:all 
>>"%log%" Echo. %date% %time% Старт упаковки и распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. !n! + %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))) else (
>>"%log%" Echo.  !n! - %%a\%%b
>nul "c:\Program Files\7-Zip\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (echo Директория не найдена)
)
>>"%log%" Echo. Распаковано - %countu%
>>"%log%" Echo. Упаковано - %countp%
 
:end
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("Unpacking - %countu% \n Packing - %countp%"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js
exit /b
Добавлено через 8 часов 28 минут
sov44, обнаружил, что условие
Windows Batch file
1
else (echo Директория не найдена)
никогда не наступает. Правда я тут уже наворотил делов, но эту часть структуры вроде не правил. Посмотрите?
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
 
set "patchcmdow=c:\Program Files (x86)\cmdow-1.4.8\bin\Release"
set "patchnhmb=c:\Program Files (x86)\nhmb-1.1.2"
set "patch7z=c:\Program Files\7-Zip"
set "in=c:\1\книги"
set "log=c:\1\книги\my_log.txt"
set "file=%~1"
set /a countp=0
set /a countu=0
 
"%patchcmdow%"\cmdow @ /HID
 
if not "%file%"=="" goto log
goto forgot
 
:log
if exist "%log%" goto go
@echo "Лог создан" %date% %time%>"%log%"
 
:go
"%patchnhmb%"\nhmb.exe "ДА - запаковать , НЕТ - распаковать,  Отменить" "Выбор действия" "Question|YesNoCancel|DefButton3" [2]
if "%errorlevel%"=="6" goto Pack
if "%errorlevel%"=="7" goto Unpack
if "%errorlevel%"=="2" goto end
goto noprog
 
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. + %%a\%%b
>nul "%patch7z%\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))))) else (
goto nodir )
)
>>"%log%" Echo. Упаковано - %countp%
goto res
            
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
>>"%log%" Echo. - %%a\%%b
>nul "%patch7z%\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (
goto nodir )
)
>>"%log%" Echo. Распаковано - %countu%
goto res
 
:forgot
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("You forgot to specify the folder, \n DUMBASS"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
goto end
 
:noprog
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("No search nhmb.exe"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
goto end
 
:nodir
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("No search to specify the folder"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
goto end
 
:res
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("Unpacking - %countu% \n Packing - %countp%"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
 
:end
exit /b
Добавлено через 2 часа 3 минуты
Попытался оптимизировать.
Но все равно при неправильно указанном имени директории, ничего не происходит.

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
@echo off
Setlocal EnableDelayedExpansion
 
set "patchcmdow=c:\Program Files (x86)\cmdow-1.4.8\bin\Release"
set "patchnhmb=c:\Program Files (x86)\nhmb-1.1.2"
set "patch7z=c:\Program Files\7-Zip"
set "in=c:\1\книги"
set "log=c:\1\книги\my_log.txt"
set "file=%~1"
set /a countp=0
set /a countu=0
 
"%patchcmdow%"\cmdow @ /HID
 
if not "%file%"=="" goto log
set "out=You forgot to specify the folder, \n DUMBASS"
goto res
 
:log
if exist "%log%" goto go
@echo "Лог создан" %date% %time%>"%log%"
 
:go
"%patchnhmb%"\nhmb.exe "ДА - запаковать , НЕТ - распаковать,  Отменить" "Выбор действия" "Question|YesNoCancel|DefButton3" [2]
if "%errorlevel%"=="6" goto Pack
if "%errorlevel%"=="7" goto Unpack
if "%errorlevel%"=="2" goto end
set "out=No search nhmb.exe"
goto res
 
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. + %%a\%%b
>nul "%patch7z%\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
))))) else (
set "out=No search to specify the folder"
goto res
)
)
>>"%log%" Echo. Упаковано - %countp%
set "out=Packing - %countp%"
goto res
            
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
>>"%log%" Echo. - %%a\%%b
>nul "%patch7z%\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))) else (
set "out=No search to specify the folder"
goto res
)
)
>>"%log%" Echo. Распаковано - %countu%
 set "out=Unpacking - %countu%"
 
:res
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("%out%"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
 
:end
exit /b
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
02.09.2015, 11:44 42
Цитата Сообщение от Nik782 Посмотреть сообщение
Но все равно при неправильно указанном имени директории, ничего не происходит.
Да, действительно не досмотрел. Попробуйте добавить маркер key
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
:pack
>"%log%" Echo. Упаковано
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
set key=1
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2,cmd) do (
if /i "%%~xb"==".%%s" (
set /a n+=1
>>"%log%" Echo. !n! "%%a\%%b"
>nul "%ProgramFiles%\7-Zip\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
))))))
if not defined key echo Директория не найдена
pause
exit /b
0
Nik782
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 20
02.09.2015, 17:27  [ТС] 43
Цитата Сообщение от sov44 Посмотреть сообщение
Попробуйте добавить маркер key
Нет, так не стало работать.
Я переделал. Подумал, что неправильно проверять наличие директории в конце подпрограммы, ниже новая структура.
Помогите с одним модулем пожалуйста:

Он не работает. Просто скопировал (не стреляйте в пианиста, он играет, как умеет)
Словами: если такой директории нет, то задаем переменную и goto res, если директория есть, то идем дальше
Windows Batch file
1
2
3
4
5
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
set "out=No search to specify the folder"
goto res )
)
Полностью структура. Все работает, кроме проверки наличия директории.
И хотелось бы как то отрезать у путей в логе спереди часть in

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
@echo off
Setlocal EnableDelayedExpansion
 
rem Описание переменных 
 
set "patchcmdow=c:\Program Files (x86)\cmdow-1.4.8\bin\Release"
set "patchnhmb=c:\Program Files (x86)\nhmb-1.1.2"
set "patch7z=c:\Program Files\7-Zip"
set "in=c:\1\книги"
set "log=c:\1\книги\my_log.txt"
set "file=%~1"
set /a countp=0
set /a countu=0
 
rem Запуск программмы, скрывающей окно коммандной строки
 
"%patchcmdow%"\cmdow @ /HID
 
rem проверка задания директории для обработки
 
if "%file%"=="" (
set "out=You forgot to specify the folder, \n DUMBASS"
goto res )
 
rem проверка наличия директории для обработки
 
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
set "out=No search to specify the folder"
goto res )
)
 
rem проверка наличия лог-файла, если отсутствует, то создается
 
if not exist "%log%" echo "Лог создан" %date% %time%>"%log%"
 
rem запуск диалогового окна
 
"%patchnhmb%"\nhmb.exe "ДА - запаковать , НЕТ - распаковать,  Отменить" "Выбор действия" "Question|YesNoCancel|DefButton3" 5
if "%errorlevel%"=="6" goto Pack
if "%errorlevel%"=="7" goto Unpack
if "%errorlevel%"=="2" goto end
set "out=No search nhmb.exe"
goto res
 
rem подпрограмма упаковщик
 
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. + %%a\%%b
>nul "%patch7z%\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
)))))) 
>>"%log%" Echo. Упаковано - %countp%
set "out=Packing - %countp%"
goto res
 
rem подпрограмма распаковщик
 
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
>>"%log%" Echo. - %%a\%%b
>nul "%patch7z%\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))))
>>"%log%" Echo. Распаковано - %countu%
 set "out=Unpacking - %countu%"
 
rem вывод результатов на экран
 
:res
    echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
    echo WSHShell.Popup("%out%"); >> %temp%\mes.js
    start %temp%\mes.js
    deltree /y %temp%\mes.js
 
rem выход из программы
 
:end
exit /b
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
02.09.2015, 17:49 44
Цитата Сообщение от Nik782 Посмотреть сообщение
Нет, так не стало работать.
я проверял, у меня работал.
0
Nik782
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 20
02.09.2015, 18:03  [ТС] 45
Бинго!
Настроил в Тотал коммандере. И кнопку на панель вывел и по горячей клавише работает!!!
Цитата Сообщение от Nik782 Посмотреть сообщение
Помогите с одним модулем пожалуйста:
Конечно теперь это неактуально, раз батник вызывается из тотал коммандера.
никак не перепутать имя директории и не пропустить. Но хотелось бы добить проект.
Чтоб мог работать и без тотала.

И еще...
Если поиск директории проводить не нужно, а задана конкретная, и только одна. Например:

c:\1\книги\12\Разное\Папка для тестов архивы\Английский язык\

то как нужно поравить код?

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
:pack 
>>"%log%" Echo. %date% %time% Старт упаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i not "%%~xb"==".zip" (
for %%s in (txt,fb2) do (
if /i "%%~xb"==".%%s" (
>>"%log%" Echo. + %%a\%%b
>nul "%patch7z%\7z.exe" a "%%a\%%~nxb.zip" "%%a\%%b"
del /q "%%a\%%b"
set /a countp=countp+1
)))))) 
>>"%log%" Echo. Упаковано - %countp%
set "out=Packing - %countp%"
goto res
 
rem подпрограмма распаковщик
 
:unpack 
>>"%log%" Echo. %date% %time% Старт распаковки
for /f "delims=" %%a in ('dir /b /s /ad "%in%\*" ^|find /i "%~1" ') do (
if /i exist "%%a" (
for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do (
if /i "%%~xb"==".zip" (
>>"%log%" Echo. - %%a\%%b
>nul "%patch7z%\7z.exe" e "%%a\%%b" -o"%%a"
del /q "%%a\%%b"
set /a countu=countu+1
))))
>>"%log%" Echo. Распаковано - %countu%
 set "out=Unpacking - %countu%"
Добавлено через 2 минуты
Цитата Сообщение от sov44 Посмотреть сообщение
я проверял, у меня работал.
Да, при неправильно заданной директории срабатывало, но у меня код немножко другой, нужно было задать переменную и сделать переход. (см.код) Ну и не смог адаптировать.
Windows Batch file
1
2
3
4
5
))))) else (
set "out=No search to specify the folder"
goto res
)
)
0
02.09.2015, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2015, 18:03

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

Извлечение файлов из архивов (исключая файлы с определёнными расширениями) и их переименование
Добрый день. Нужна помощь в создании батника - задача: В папке D:/back ...

Архивация по 50 файлов
Есть одна папка в которой n картинок. Я вбрасываю в нее и жму name.bat...


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

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

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