» 7-Zip / 7z (часть 2)
Цитата:
Мне все-таки нужны эти параметры для 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\\"
=================================================================================
хм. Вывод:
Проверять HKLM\Software\7-Zip\Path64, если отсутствует, то проверять HKLM\Software\7-Zip\Path32, если отсутствует, то HKLM\Software\7-Zip\Path.
64-битный приоритетней.
Ну еще можно кое-какие доп. ключи проверить. К примеру, HKCR\7-Zip.7z. Кажется такой ключ создается при ассоциации с 7z.
Сейчас придумаю, как эту многоэтажку намутить.
Проверять HKLM\Software\7-Zip\Path64, если отсутствует, то проверять HKLM\Software\7-Zip\Path32, если отсутствует, то HKLM\Software\7-Zip\Path.
64-битный приоритетней.
Ну еще можно кое-какие доп. ключи проверить. К примеру, HKCR\7-Zip.7z. Кажется такой ключ создается при ассоциации с 7z.
Сейчас придумаю, как эту многоэтажку намутить.
unreal666
Интересно будет посмотреть, что Вы придумаете с чтением из реестра, учитывая то, что Ваш батник на х64 системе может быть запущен как в x64 среде так и в x86.
Интересно будет посмотреть, что Вы придумаете с чтением из реестра, учитывая то, что Ваш батник на х64 системе может быть запущен как в x64 среде так и в x86.
GORA2
WinXP x64 учитывать?
Просто на Win7 x64 можно временно создавать симлинк на папку windоws и для system32\cmd уже обращаться в этот симлинк.
WinXP x64 учитывать?
Просто на Win7 x64 можно временно создавать симлинк на папку windоws и для system32\cmd уже обращаться в этот симлинк.
Цитата:
WinXP x64 учитывать?
А в чем суть вопроса? У меня нет XP x64 и ее тонкостей я не знаю. Я проверял на XP x86, 7 x86, 7 x64.
Цитата:
А в чем суть вопроса?
на win7 x64 можно симлинки использовать.
без симлинков - фиг его знает.
короче. замутил такое:
Файл, который в 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
Файл, который в 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
Ну я же не могу для работы какого-то скрипта каждому советовать поставить стороннюю прогу. Надо только средствами самой винды.
Пускай лучше будет так, как есть. Win XP x64 очень мало у кого стоят.
Ну я же не могу для работы какого-то скрипта каждому советовать поставить стороннюю прогу. Надо только средствами самой винды.
Пускай лучше будет так, как есть. Win XP x64 очень мало у кого стоят.
unreal666
Цитата:
Извиняюсь за неточность не папку, а файл\файлы - исходного архива.
И ещё вопрос, почему в консольке отработка задания отображается крякозябрами?
Цитата:
Эм. Это какую исходную? Папки, в которых лежат конвертируемые архивы, и так никуда не деваются.
Извиняюсь за неточность не папку, а файл\файлы - исходного архива.
И ещё вопрос, почему в консольке отработка задания отображается крякозябрами?
unreal666
…ну офф так офф, поясните зачем делать link для cmd
Цитата:
и чем в win-xp Junction Марка Руссиновича не устраивает которая делает связи?
…ну офф так офф, поясните зачем делать link для cmd
Цитата:
без симлинков - фиг его знает.
и чем в win-xp Junction Марка Руссиновича не устраивает которая делает связи?
Asilus
Цитата:
почти в самом конце найди
Код: DEL "%~1" >nul 2>&1
Цитата:
Извиняюсь за неточность не папку, а файл\файлы - исходного архива.
почти в самом конце найди
Код: DEL "%~1" >nul 2>&1
unreal666
Цитата:
Спасибо.
Цитата:
В ANSI. Нужно в юникоде?
Чтобы сделать такой батник для конвертации в zip я так понимаю его нужно почти полностью переписать?
В ряде случаев он был бы не менее полезен.
Цитата:
почти в самом конце найди
Код:
DEL "%~1" >nul 2>&1
и удали.
Спасибо.
Цитата:
в какой кодировке сохранен батник?
В ANSI. Нужно в юникоде?
Чтобы сделать такой батник для конвертации в zip я так понимаю его нужно почти полностью переписать?
В ряде случаев он был бы не менее полезен.
Цитата:
В ANSI.
Ну должно быть в Win-1251 (походу ANSI у тебя это и есть), а не в OEM 866.
Если в Win-1251, то текст должен выводиться нормально, т.к. у меня явно указано юзать Win-1251 (@CHCP 1251).
Добавлено:
Цитата:
Чтобы сделать такой батник для конвертации в zip я так понимаю его нужно почти полностью переписать?
Надо только параметры кодирования заменить, т.е. в подпрограмме Packing. Ну и переменные, связанны с zip. Остальная часть с архивированием не связана, только с разархивированием.
unreal666 а если в 32-битном cmd.exe вот так
Код: START /belownormal /b %windir%\sysnative\cmd.exe /c итд.
Код: START /belownormal /b %windir%\sysnative\cmd.exe /c итд.
Цитата:
sysnative
Это в WinXP x64 так что ли? В Win7 x64 такого нет.
ой! может этого нет в winXP x64. sorry НО в win7 этот код работает
Цитата:
ой! может этого нет в winXP x64. sorry НО в win7 этот код работает
может наоборот?
В Win7 x64 команда %windir%\sysnative\cmd.exe выдает "Системе не удается найти указанный путь" и правильно, потому что такой папки нет в Win7. Может в каких-нибудь его ранних версия было.
unreal666 13:52 07-04-2012
Цитата:
(в XP нормально работало). Тогда там решили каноничную cp866 использовать.
Цитата:
Если в Win-1251, то текст должен выводиться нормально, т.к. у меня явно указано юзать Win-1251 (@CHCP 1251).У меня нечто похожее было - сделал батник в cp1251 и команду соответствующую вставил (специально для W7), однако на Win7 наоборот из-за этого кириллица в кракозябрах получилась
(в XP нормально работало). Тогда там решили каноничную cp866 использовать.
addhaloka
у меня норм на Win7.
Asilus
добавил в свой пост с кодом абзац:
Цитата:
у меня норм на Win7.
Asilus
добавил в свой пост с кодом абзац:
Цитата:
P.S.
Оба батника рассчитаны на кодировку Win-1251. Если у кого-то все равно выводит крякозябрами, то удалить строчки с CHCP из обоих батников, удалить параметры -sccWIN в большом батнике и сохранить оба батника в кодировке OEM 866 (cp866/DOS-кодировка).
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]
система 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]
Inoz2000
Ааа. Так эту виртуальную папку только из x32 окружения видно. Не знал. Тогда и вправду можно без симлинков обойтись.
ЗЫ.
Скачать что ли WinXP x64 и посмотреть, чего там да как . (чего-то смайлик ухмылки на улыбку слишком похож)
Ааа. Так эту виртуальную папку только из x32 окружения видно. Не знал. Тогда и вправду можно без симлинков обойтись.
ЗЫ.
Скачать что ли WinXP x64 и посмотреть, чего там да как . (чего-то смайлик ухмылки на улыбку слишком похож)
unreal666 14:27 07-04-2012
Цитата:
Код: @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
Цитата:
у меня норм на 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
Цитата:
VERIFY OTHER 2>NUL
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1
Чего это не понял.
Сейчас проверил. Если ENABLEEXTENSIONS в реестре отключен, то ошибок от "VERIFY OTHER 2>NUL" не будет (т.е. он вообще на ERRORLEVEL не влияет). А вот если включен, то ERRORLEVEL=1.
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.
В справке в Win7 тоже самое написано. Но при параметре ENABLEEXTENSIONS=0 в реестре, у меня что "VERIFY OTHER 2>nul", что "SETLOCAL ENABLEEXTENSIONS" вообще не устанавливают переменную. А при ENABLEEXTENSIONS=1, "VERIFY OTHER 2>nul" выдает ошибку 1, а "SETLOCAL ENABLEEXTENSIONS" точно также ничего не изменяет.
Глюк.
Добавлено:
ЗЫ.
ХМ. Вообще судя по описанию, эта идет проверка именно на доступность самой команды, а не реакция на включение/отключение в реестре. Т.е. проверка на поддержку ENABLEEXTENSIONS. Надо проверять на разных ОС (win2k и т.п.) чего да как, т.к. непонятно как ее можно запретить (может где-нибудь в административных шаблонах или подобном )
Глюк.
Добавлено:
ЗЫ.
ХМ. Вообще судя по описанию, эта идет проверка именно на доступность самой команды, а не реакция на включение/отключение в реестре. Т.е. проверка на поддержку ENABLEEXTENSIONS. Надо проверять на разных ОС (win2k и т.п.) чего да как, т.к. непонятно как ее можно запретить (может где-нибудь в административных шаблонах или подобном )
unreal666
Ну, насчёт сторонних средств согласен, просто мы говорили по линки, и я вспомнил про этот драйвер по ассоциации разговора. Но, по большому счёту оно лишним не будет. В локалке он у нас сейчас на 300 с хвостиком ХР машинах стоит и пока за полгода к нему ни одной претензии, зато народ перестал просить место на серваках для чистки дисков через два дня на третий. Плюс это или минус?
Inoz2000
Скромно, возможностями. Сравните Junction заброшенный в 2010 году с Link Shell Extension (LSE) последняя версия 3.7.1.5 которой вышла 2-го апреля этого года, и вдобавок, что для многих немаловажно, имеющую встроенный русский перевод и интегрирующуюся в оболочку системы добавляя в неё поддержку работы с симлинками, хардлинками и точками перехода по терминологии Микрософт, а реально называемыми точками монтирования согласно принятой в ВТ терминологии и стандартам ISO (Международной Организации Стандартов) и ещё целую кучу функций не реализованную Микрософт специально для того, чтобы сторонние разработчики могли создать свои решения для ОС. Только одна подсказка - на ХР сначала надо поставить LSE, а только после неё драйвер - иначе симлинки под ней работать не будут!
Ну, насчёт сторонних средств согласен, просто мы говорили по линки, и я вспомнил про этот драйвер по ассоциации разговора. Но, по большому счёту оно лишним не будет. В локалке он у нас сейчас на 300 с хвостиком ХР машинах стоит и пока за полгода к нему ни одной претензии, зато народ перестал просить место на серваках для чистки дисков через два дня на третий. Плюс это или минус?
Inoz2000
Скромно, возможностями. Сравните Junction заброшенный в 2010 году с Link Shell Extension (LSE) последняя версия 3.7.1.5 которой вышла 2-го апреля этого года, и вдобавок, что для многих немаловажно, имеющую встроенный русский перевод и интегрирующуюся в оболочку системы добавляя в неё поддержку работы с симлинками, хардлинками и точками перехода по терминологии Микрософт, а реально называемыми точками монтирования согласно принятой в ВТ терминологии и стандартам ISO (Международной Организации Стандартов) и ещё целую кучу функций не реализованную Микрософт специально для того, чтобы сторонние разработчики могли создать свои решения для ОС. Только одна подсказка - на ХР сначала надо поставить LSE, а только после неё драйвер - иначе симлинки под ней работать не будут!
Victor_VG использую LinkShellExtension и доволен (а так же FAR). А Junction — подходит для создания связей в XP. (в том батнике)
проверил по части WinXP x64. Не поддерживает %windir%\sysnative. Ну и ладно. Мое с линками все равно тоже не было рассчитано на WinXP x64, та что все таки перейду на %windir%\sysnative. Более родная поддержка.
Добавлено:
блин еще же Vista существует. В Vista x64 в среде x32 существует папка %windir%\sysnative ?
Добавлено:
блин еще же Vista существует. В Vista x64 в среде x32 существует папка %windir%\sysnative ?
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
Предыдущая тема: RDM+, TSMobiles и VNC+
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.