Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Iska
1 Добавил в конец Pause, иначе не мог увидеть сообщений
2 Запуск батника производил без параметров, поэтому исправил (только для тестов) строку
Код: Выделить весь код
set sFolder=%~dp0
2.1 На Win7 x64 получил Can't find path to 7-Zip executive хотя 7-Zip у меня разумеется стоит и ключи на месте.
2.2 На Win XP получил Can't find 7-Zip executive in [c:\Program Files\7-Zip] Причина: разные инсталляторы 7-Zip по разному пишут путь в реестр, msi пишут с завершающим слешем, а exe без оного.
3 Присвоение переменной %PathTo7Zip% оригинально, но для начинающих будет непонятно. К тому же при любом (без знаний метода формирования переменной) изменении имени переменной и\или имени п\п :GetPathTo7Zip приведет к непредсказуемым результатам.
4 После того как подправил получение пути батник заработал, но...
4.1 При отсутствии архивов в папке сообщение Not found any 7-zip archivies in [%sFolder%] не вывелось
4.2 После добавления в папку запароленного архива (получилось это случайно), батник на нем остановился для ввода пароля. Ввел неправильный пароль (правильный просто не помню) и получил сообщение Not found any 7-zip archivies in [E:\Temp\]
4.2.1 Но если этот запароленный архив не будет последним в списке обрабатываемых архивов, то сообщение снова не выводится

Немного подправил Ваш вариант и получилось это:
Код: Выделить весь код
@Echo Off
Setlocal EnableExtensions

Set sFolder=%~1
:: Set sFolder=%~dp0
Set "flag="
Set "PathTo7Zip="

If Not Defined sFolder Call :_abort "Usage: %~nx0 [Path]"
If "%sFolder:~-1%"=="\" Set sFolder=%sFolder:~0,-1%
For %%i In ("%sFolder%\*.7z") Do Set flag=1
If Not Defined flag Call :_abort "Not found any 7-zip archivies in [%sFolder%]"
For /f "tokens=2*" %%i In ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip" /v "Path" 2^>nul') Do Set PathTo7Zip=%%j
If Not Defined PathTo7Zip Call :_abort "Can't find path to 7-Zip executive"
If Not "%PathTo7Zip:~-1%"=="\" Set PathTo7Zip=%PathTo7Zip%\
If Not Exist "%PathTo7Zip%7z.exe" Call :_abort "Can't find 7-Zip executive in [%PathTo7Zip%]"
For %%i In ("%sFolder%\*.7z") Do "%PathTo7Zip%7z.exe" x "%%~fi" -o%date% -y -ppassword>nul
Call :_abort "Unpacking is complete"

:_abort
Echo.
Echo 	%~1
Echo.
Pause
Endlocal
Exit

Последний раз редактировалось gora, 22-03-2012 в 12:04.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:16, 22-03-2012 | #5