Ru-Board.club
← Вернуться в раздел «Программы»

» 7-Zip / 7z (часть 2)

Автор: dt100
Дата сообщения: 07.04.2012 05:28
unreal666

Цитата:
У кого стоит 64-битный 7-zip по стандартному пути скажите значения переменных в ветке HKLM\Software\7-Zip для переменных Path и Path64



Path64 - записи нет.
Автор: GORA2
Дата сообщения: 07.04.2012 06:03

Цитата:
Мне все-таки нужны эти параметры для x64

Делал себе сводную табличку:
Код: Разрядность ОС    Тип инсталлятора 7-Zip    Разрядность первого инсталлятора    Разрядность второго инсталлятора
=================================================================================
x86    exe    x86
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files\\7-Zip"
"Path32"="C:\\Program Files\\7-Zip"

[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip"
"Path32"="C:\\Program Files\\7-Zip"
=================================================================================
x86    msi    x86
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path32"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path32"="C:\\Program Files\\7-Zip\\"
=================================================================================
x64    msi    x86
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files (x86)\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\7-Zip]
"Path"="C:\\Program Files (x86)\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"
=================================================================================
x64    msi    x64
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"
=================================================================================
x64    msi    x86    x64
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\7-Zip]
"Path"="C:\\Program Files (x86)\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"
=================================================================================
x64    msi    x64    x86
=================================================================================
[HKEY_CURRENT_USER\Software\7-Zip]
"Path"="C:\\Program Files (x86)\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\7-Zip]
"Path"="C:\\Program Files (x86)\\7-Zip\\"
"Path32"="C:\\Program Files (x86)\\7-Zip\\"
=================================================================================
Автор: unreal666
Дата сообщения: 07.04.2012 06:10
хм. Вывод:
Проверять HKLM\Software\7-Zip\Path64, если отсутствует, то проверять HKLM\Software\7-Zip\Path32, если отсутствует, то HKLM\Software\7-Zip\Path.
64-битный приоритетней.
Ну еще можно кое-какие доп. ключи проверить. К примеру, HKCR\7-Zip.7z. Кажется такой ключ создается при ассоциации с 7z.
Сейчас придумаю, как эту многоэтажку намутить.
Автор: GORA2
Дата сообщения: 07.04.2012 06:14
unreal666
Интересно будет посмотреть, что Вы придумаете с чтением из реестра, учитывая то, что Ваш батник на х64 системе может быть запущен как в x64 среде так и в x86.
Автор: unreal666
Дата сообщения: 07.04.2012 06:26
GORA2

WinXP x64 учитывать?
Просто на Win7 x64 можно временно создавать симлинк на папку windоws и для system32\cmd уже обращаться в этот симлинк.
Автор: GORA2
Дата сообщения: 07.04.2012 06:46

Цитата:
WinXP x64 учитывать?

А в чем суть вопроса? У меня нет XP x64 и ее тонкостей я не знаю. Я проверял на XP x86, 7 x86, 7 x64.
Автор: unreal666
Дата сообщения: 07.04.2012 06:49

Цитата:
А в чем суть вопроса?


на win7 x64 можно симлинки использовать.
без симлинков - фиг его знает.
Автор: unreal666
Дата сообщения: 07.04.2012 09:23
короче. замутил такое:
Файл, который в SendTo:

Код: @ECHO off

SETLOCAL

SET "tmpW=%date%%time: =%"
SET "tmpW=%tmpW:,=%"
SET "tmpW=%tmpW::=%"
SET "tmpW=%tmpW:.=%"
SET "tmpW=%TEMP%\win-%tmpW%"

SET "sys32=%windir%\system32"
SET "PROC=AMD"
IF "%PROCESSOR_ARCHITEW6432%"=="AMD64" ( mklink /d %tmpW% %windir% && SET "sys32=%tmpW%\system32" && SET "PROC=AMD32-64" )
START /belownormal /b %sys32%\cmd.exe /c ""D:\Programs\SharedFolder\BAT\7z\convert_archive.bat" %* "

ENDLOCAL
Автор: Victor_VG
Дата сообщения: 07.04.2012 11:32
unreal666

На ХР так же, но через Symbolic Link Driver for Windows XP x64 | x86. Работает как часики, для установки распаковать и запустить symlink.exe и он всё установит, включая консольную программу ln - интерфейс к этому механизму.
Автор: unreal666
Дата сообщения: 07.04.2012 11:49
Victor_VG
Ну я же не могу для работы какого-то скрипта каждому советовать поставить стороннюю прогу. Надо только средствами самой винды.
Пускай лучше будет так, как есть. Win XP x64 очень мало у кого стоят.
Автор: Asilus
Дата сообщения: 07.04.2012 12:00
unreal666

Цитата:
Эм. Это какую исходную? Папки, в которых лежат конвертируемые архивы, и так никуда не деваются.

Извиняюсь за неточность не папку, а файл\файлы - исходного архива.

И ещё вопрос, почему в консольке отработка задания отображается крякозябрами?
Автор: Inoz2000
Дата сообщения: 07.04.2012 12:05
unreal666
…ну офф так офф, поясните зачем делать link для cmd
Цитата:
без симлинков - фиг его знает.

и чем в win-xp Junction Марка Руссиновича не устраивает которая делает связи?
Автор: unreal666
Дата сообщения: 07.04.2012 12:30
Asilus

Цитата:
Извиняюсь за неточность не папку, а файл\файлы - исходного архива.

почти в самом конце найди

Код: DEL "%~1" >nul 2>&1
Автор: Asilus
Дата сообщения: 07.04.2012 12:48
unreal666

Цитата:
почти в самом конце найди

Код:
DEL "%~1" >nul 2>&1

и удали.

Спасибо.


Цитата:
в какой кодировке сохранен батник?

В ANSI. Нужно в юникоде?

Чтобы сделать такой батник для конвертации в zip я так понимаю его нужно почти полностью переписать?
В ряде случаев он был бы не менее полезен.
Автор: unreal666
Дата сообщения: 07.04.2012 12:52

Цитата:
В ANSI.

Ну должно быть в Win-1251 (походу ANSI у тебя это и есть), а не в OEM 866.
Если в Win-1251, то текст должен выводиться нормально, т.к. у меня явно указано юзать Win-1251 (@CHCP 1251).

Добавлено:

Цитата:
Чтобы сделать такой батник для конвертации в zip я так понимаю его нужно почти полностью переписать?

Надо только параметры кодирования заменить, т.е. в подпрограмме Packing. Ну и переменные, связанны с zip. Остальная часть с архивированием не связана, только с разархивированием.
Автор: Inoz2000
Дата сообщения: 07.04.2012 12:55
unreal666 а если в 32-битном cmd.exe вот так
Код: START /belownormal /b %windir%\sysnative\cmd.exe /c итд.
Автор: unreal666
Дата сообщения: 07.04.2012 13:04

Цитата:
sysnative

Это в WinXP x64 так что ли? В Win7 x64 такого нет.
Автор: Inoz2000
Дата сообщения: 07.04.2012 13:09
ой! может этого нет в winXP x64. sorry НО в win7 этот код работает
Автор: unreal666
Дата сообщения: 07.04.2012 13:15

Цитата:
ой! может этого нет в winXP x64. sorry НО в win7 этот код работает

может наоборот?
В Win7 x64 команда %windir%\sysnative\cmd.exe выдает "Системе не удается найти указанный путь" и правильно, потому что такой папки нет в Win7. Может в каких-нибудь его ранних версия было.
Автор: addhaloka
Дата сообщения: 07.04.2012 13:18
unreal666 13:52 07-04-2012
Цитата:
Если в Win-1251, то текст должен выводиться нормально, т.к. у меня явно указано юзать Win-1251 (@CHCP 1251).
У меня нечто похожее было - сделал батник в cp1251 и команду соответствующую вставил (специально для W7), однако на Win7 наоборот из-за этого кириллица в кракозябрах получилась
(в XP нормально работало). Тогда там решили каноничную cp866 использовать.
Автор: unreal666
Дата сообщения: 07.04.2012 13:27
addhaloka
у меня норм на Win7.

Asilus
добавил в свой пост с кодом абзац:

Цитата:
P.S.
Оба батника рассчитаны на кодировку Win-1251. Если у кого-то все равно выводит крякозябрами, то удалить строчки с CHCP из обоих батников, удалить параметры -sccWIN в большом батнике и сохранить оба батника в кодировке OEM 866 (cp866/DOS-кодировка).
Автор: Inoz2000
Дата сообщения: 07.04.2012 13:28
unreal666 [more]

система win7x64

открыть C:\Windows\SysWOW64\cmd.exe

ввести команду SET p
выдаст

PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64

ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

ввести команду %windir%\sysnative\cmd.exe /c SET p
выдаст

PROCESSOR_ARCHITECTURE=AMD64

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

[/more]
Автор: unreal666
Дата сообщения: 07.04.2012 13:39
Inoz2000
Ааа. Так эту виртуальную папку только из x32 окружения видно. Не знал. Тогда и вправду можно без симлинков обойтись.

ЗЫ.
Скачать что ли WinXP x64 и посмотреть, чего там да как . (чего-то смайлик ухмылки на улыбку слишком похож)
Автор: addhaloka
Дата сообщения: 07.04.2012 13:39
unreal666 14:27 07-04-2012
Цитата:
у меня норм на Win7
Может, продвинутый юзер чего-нибудь натвикал, для cmd. Я на такие случаи в некотрорые свои батники такую конструкцию прописывал:
Код: @echo off
cls
color 1b

VERIFY OTHER 2>NUL
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (
    echo Не включена расширенная обработка команд. Для нормальной
    echo работы скрипта включите расширенную обработку
    echo Нажмите любую клавишу для выхода ...
    pause >NUL
    goto _quit
    )

setlocal
%~d0
cd "%~dp0"

chcp | find "866" >NUL
if errorlevel 1 chcp 866 >NUL
Автор: unreal666
Дата сообщения: 07.04.2012 13:51

Цитата:
VERIFY OTHER 2>NUL
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1

Чего это не понял.
Сейчас проверил. Если ENABLEEXTENSIONS в реестре отключен, то ошибок от "VERIFY OTHER 2>NUL" не будет (т.е. он вообще на ERRORLEVEL не влияет). А вот если включен, то ERRORLEVEL=1.
Автор: addhaloka
Дата сообщения: 07.04.2012 14:04
unreal666 14:51 07-04-2012
Цитата:
Чего это не понял.
Ну здесь я не знаю. Либо я ошибаюсь, либо в W7 как-то по другому. Я руководствовался справкой в XP:
Цитата:
Если команда SETLOCAL вызывается с аргументом, она устанавливает код ошибки
ERRORLEVEL. Если указан один из двух допустимых аргументов, код ошибки будет
равен нулю, иначе возвращается значение 1. Это свойство можно использовать в
пакетных файлах, чтобы определить доступность расширенной обработки команд,
например:

VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Не удается включить расширенную обработку

Эта группа команд работает, так как в прежних версиях CMD.EXE команда SETLOCAL
не устанавливает значение ERRORLEVEL. Команда VERIFY с недопустимым аргументом
необходима для установки ненулевого значения ERRORLEVEL.
Автор: unreal666
Дата сообщения: 07.04.2012 14:10
В справке в Win7 тоже самое написано. Но при параметре ENABLEEXTENSIONS=0 в реестре, у меня что "VERIFY OTHER 2>nul", что "SETLOCAL ENABLEEXTENSIONS" вообще не устанавливают переменную. А при ENABLEEXTENSIONS=1, "VERIFY OTHER 2>nul" выдает ошибку 1, а "SETLOCAL ENABLEEXTENSIONS" точно также ничего не изменяет.
Глюк.

Добавлено:
ЗЫ.
ХМ. Вообще судя по описанию, эта идет проверка именно на доступность самой команды, а не реакция на включение/отключение в реестре. Т.е. проверка на поддержку ENABLEEXTENSIONS. Надо проверять на разных ОС (win2k и т.п.) чего да как, т.к. непонятно как ее можно запретить (может где-нибудь в административных шаблонах или подобном )
Автор: Victor_VG
Дата сообщения: 07.04.2012 22:11
unreal666

Ну, насчёт сторонних средств согласен, просто мы говорили по линки, и я вспомнил про этот драйвер по ассоциации разговора. Но, по большому счёту оно лишним не будет. В локалке он у нас сейчас на 300 с хвостиком ХР машинах стоит и пока за полгода к нему ни одной претензии, зато народ перестал просить место на серваках для чистки дисков через два дня на третий. Плюс это или минус?

Inoz2000

Скромно, возможностями. Сравните Junction заброшенный в 2010 году с Link Shell Extension (LSE) последняя версия 3.7.1.5 которой вышла 2-го апреля этого года, и вдобавок, что для многих немаловажно, имеющую встроенный русский перевод и интегрирующуюся в оболочку системы добавляя в неё поддержку работы с симлинками, хардлинками и точками перехода по терминологии Микрософт, а реально называемыми точками монтирования согласно принятой в ВТ терминологии и стандартам ISO (Международной Организации Стандартов) и ещё целую кучу функций не реализованную Микрософт специально для того, чтобы сторонние разработчики могли создать свои решения для ОС. Только одна подсказка - на ХР сначала надо поставить LSE, а только после неё драйвер - иначе симлинки под ней работать не будут!
Автор: Inoz2000
Дата сообщения: 07.04.2012 22:30
Victor_VG использую LinkShellExtension и доволен (а так же FAR). А Junction — подходит для создания связей в XP. (в том батнике)
Автор: unreal666
Дата сообщения: 07.04.2012 23:00
проверил по части WinXP x64. Не поддерживает %windir%\sysnative. Ну и ладно. Мое с линками все равно тоже не было рассчитано на WinXP x64, та что все таки перейду на %windir%\sysnative. Более родная поддержка.

Добавлено:
блин еще же Vista существует. В Vista x64 в среде x32 существует папка %windir%\sysnative ?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135

Предыдущая тема: RDM+, TSMobiles и VNC+


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.