%PROCESSOR_ARCHITECTURE% в wincmd.ini и совместимость Win9X

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

Skif_off писал(а): Код:
start %~dp0\TOTALCMD.EXE /i=%~dp0\wincmd9x.ini
Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.
Win7 SP1 Ultimate x64, TC8.52a x64
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher писал(а):Я имел в виду
Я понял, уточнение касалось только VBS.
Flasher писал(а):Во всех случаях нужен как минимум ключ /N.
Это спорно.

[cut]Известно, только не new ActiveX, а new ActiveXObject :wink: (Раз, два). Иллюстрировал экранирование кавычек, упустил, исправил пост, дабы не смутить никого.
"Бодаться" - это про удвоение кавычек в VBS, где-то в половине случаев путался.
start написал на автомате, в последних батниках часто использовал start /wait.
О скобках в VBS: это да, написал как привычнее в JScript.[/cut]
gora писал(а):Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.
Поторопился :) Вообще, видел примеры и с слешем, и без, посмотрел где использую у себя - не пишу.

P.S. Спасибо за указание на ошибки, ну редко пишу батники и VBS-скрипты, да :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):Я понял, уточнение касалось только VBS.
Где там было про vbs?
Skif_off писал(а):Это спорно.
Почему же? Например, стоит запрет, а процесс ТС завис в трее.

[cut]И что у тебя при замене получится? new ActiveXObjectObject :lol:
А на vbs так:

Код: Выделить всё

With CreateObject("WScript.Shell") .Run "TOTALCMD.EXE /N /i=""" & .CurrentDirectory & "\wincmd9x.ini""" End With
[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher писал(а):Не бред, если понимаешь о чём речь и с чьей стороны разбивка. Читаем внимательно приведённые топики.
Наверное, где-то что-то пропустил, ибо теперь уже не понял. Сделаю вид, что понял, дабы не оффтопить.
Flasher писал(а):Разблокируй. Там можно что угодно заблокировать, в т.ч. запуск Тотала.
Спасибо, кэп! Не везде ж я админом могу ковыряться. Не катит.
Skif_off писал(а):start %~dp0\TOTALCMD.EXE /i=%~dp0\wincmd9x.ini
Да, кавычек и вправду нет. За "%~dp0" спасибо, как-то даже и мысли не пришло его притулить. Но всё-равно это полдела, ибо в результате всего нужно избавиться от батников и нескольких wincmd.ini.
Skif_off писал(а):
Flasher писал(а):Во всех случаях нужен как минимум ключ /N.
Это спорно.
Кстати, да. Мне нужен. И cmd ругается на него, ибо не понимает такой внезапности. ЧЯДНТ?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann писал(а):Сделаю вид, что понял, дабы не оффтопить.
Если бы понял, не написал ругательство. Речь шла о специальном разделении, а не предусмотренном изначально.
Mellomann писал(а):Спасибо, кэп! Не везде ж я админом могу ковыряться. Не катит.
Ну, тогда мирись с трудностями, где ни Тотал не запустить, ни батник, ни ещё что-нибудь. Чего стонать-то? Всякое проходили.
Mellomann писал(а):нужно избавиться от батников
От батников или от консольного окна?
Mellomann писал(а):И cmd ругается на него, ибо не понимает такой внезапности. ЧЯДНТ?
Интересно бы узнать, отчего такая внезапность. На /i не ругается?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher писал(а):От батников или от консольного окна?
От первого. Второе поборото вызовом через start и последующим exit.
Flasher писал(а):Интересно бы узнать, отчего такая внезапность. На /i не ругается?
Выводит:

Код: Выделить всё

Недопустимый ключ: "/N".
Вот мой новый батник:[cut]

Код: Выделить всё

@color 0A
@if not exist "%ProgramW6432%" (@color 0C & @echo Обнаружено не x64 окружение! & @pause & @GOTO END)
@echo Работам в %~dp0
@set /p tcbit=32 или 64? 
@GOTO %tcbit%
:32
@start "%~dp0\totalcmd.exe" /N /I="%~dp0\WincmdU64.ini"
@GOTO END
:64
@start "%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
@GOTO END
:END
@exit
[/cut] Не вкурю где ошибка.
В прошлой версии всё работало: [cut]

Код: Выделить всё

@color 0A
@if not exist "%ProgramW6432%" (@color 0C & @echo Обнаружено не x64 окружение! & @pause & @GOTO END)
@if exist "C:\PROGRA~1\TC\TOTALCMD.EXE" (@set tcdir=c:\PROGRA~1\TC) else @if exist "C:\PROGRA~2\TC\TOTALCMD.EXE" (@set tcdir=c:\PROGRA~2\TC)
@echo Работает для пути %tcdir%\
@set /p tcbit=Версия Total Commander для запуска (32 или 64)... 
@GOTO %tcbit%
:32
@start %tcdir%\totalcmd.exe /N /I=%tcdir%\WincmdU64.ini
@GOTO END
:64
@start %tcdir%\totalcmd64.exe /N /I=%tcdir%\Wincmd64.ini
@GOTO END
:END
@exit
[/cut]
З.Ы.
Кажись, придумал часть решения! Костыли, но всё же...
"%PROCESSOR_ARCHITECTURE%" в Win9X нет, поэтому выводится ноль символов. А это значит, под
RAR="%COMMANDER_PATH%\Plugins\arc\Rar_%PROCESSOR_ARCHITECTURE%.exe" -m5 -s -t
надо обозвать файлы
C:\Program Files\TC\Plugins\arc\Rar_.exe
C:\Program Files\TC\Plugins\arc\Rar_amd64.exe
C:\Program Files\TC\Plugins\arc\Rar_x86.exe

Как раз подсунется RAR версии 3.93 для некросистем и новые 5.хх для ХР+.

Осталось так же AkelPad, default.bar и прочий расходняк повесить. Правда, три варианта каждого как-то напряжно. Зато работает.

Хорошо хоть IA64 почила с миром, не надо под неё огород лепить...
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Mellomann писал(а):Вот мой новый батник:
А не проще вместо @ перед каждой командой один раз в первой написать @echo off?
И не логичнее ли при обнаружении 32-битной системы просто делать goto 32?

Я бы всё равно оставил переменную tcdir, можно сразу COMMANDER_PATH определять, можно просто в %~dp0, если в 9х поддерживается ~.
Кстати, проверил, она и не поддерживается. Вместо %~dp0 пиши просто %0\.. (всегда выручало), но не заворачивай тогда в кавычки:

Код: Выделить всё

start %0\..\totalcmd.exe /N /I=%0\..\wincmdU64.ini

Код: Выделить всё

start %0"\..\totalcmd.exe" /N /I=%0"\..\wincmdU64.ini"
(вторая запись корректна, т.к. строки конкатенируются, а кавычки удаляются, это позволяет склеивать пути с пробелами с переменными и не забодиться о кавычках)
gora писал(а):Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.
Я обычно чихаю на такие прибабахи (в батниках, в Visual Studio и т.п.) и специально ставлю разделительный слэш для читабельности.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

MVV писал(а):Вместо %~dp0 пиши просто %0\.. (всегда выручало).
Ой-вай! Тут явно не то, тогда батник запускает "TCwin64sel_NEW.cmd\TOTALCMD.EXE" - это будет за гранью добра...
MVV писал(а): А не проще вместо @ перед каждой командой один раз в первой написать @echo off?
Старая привычка, зато надёжно.
MVV писал(а):при обнаружении 32-битной системы просто делать goto 32?
goto 32 даёт запуск тотала с конфигой для win64, на win32 оно не надо.
MVV писал(а):%~dp0, если в 9х поддерживается
На win9X этот бат не надо, он только для х64

Кстати, отдельной строкой вынес, проверил:
@"%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
работает, но стоит дописать
@start "%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
и облом.
Кавычки есть, но толку нет.
Последний раз редактировалось Mellomann Вс сен 20, 2015 17:30, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Ой-вай! Тут явно не то, тогда батник запускает "TCwin64sel_NEW.cmd\TOTALCMD.EXE" - это будет за гранью добра...
Сдаётся, что ты что-то не так пишешь. На любой винде %0\.. указывает на папку, где лежит батник, т.к. операционка корректно разрешает такой путь. Проверил на тестовом батнике - запускает правильно:

Код: Выделить всё

start "" %0\..\test.exe
goto 32 даёт запуск тотала с конфигой для win64, на win32 оно не надо.
Странная логика, пишешь 32, а запускается для 64-битной... И имя инишника тоже непонятное - wincmdU64. Я бы для 32-битной делал wincmd32, а для 64-битной - wincmd64 (или для одной из них просто wincmd).
На win9X этот бат не надо, он только для х64
Я ж подумал, что батник ты пишешь как раз для древней, ибо в новой можно тупо в конфиге Autorun всё определить.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

MVV
У меня вообще хитро:
win32+TC32 - запускаем totalcmd.exe (на стандартный конфиг)
win64+TC64 - запускаем totalcmd.exe /N /I="%~dp0\Wincmd64.ini"
win64+TC32 - запускаем totalcmd.exe /N /I="%~dp0\WincmdU64.ini"
При этом "WincmdU64.ini" - это набор строк RedirectSection на Wincmd.ini и Wincmd64.ini.
Вот такой "опыт разработки и внедрения гибких решений".

Все пляски ради х64. Само по себе х32 уже отлажено со старых времён, а вот х64 добавляется по мере развития поверх существующего.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann писал(а):От первого.
Только заменой на скрипт с записью значений в ini и запуском ТС. Кстати, vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.
Mellomann писал(а):Второе поборото вызовом через start и последующим exit.
И какое же это избавление от чёрного окна?
Mellomann писал(а):Зато работает.
Только из системной оболочки и консоли. А как же исходная задача с Editor= и т. п.? %PROCESSOR_ARCHITECTURE% тут никак не годится.

И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Если батник запускать двойным кликом, рабочая папка будет правильной, а если из другой папки, то нет. И если с правами админа его запускать, рабочая папка будет C:\Windows\System32, и без указания пути батник работать не будет.
Кстати, vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.
Слово "скомпилить" не совсем применимо к скриптам, которые просто пихаются в запускающий их экзешник. :)
Последний раз редактировалось MVV Пн сен 21, 2015 10:22, всего редактировалось 1 раз.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher писал(а):vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.
а это интересно...
Flasher писал(а):
Mellomann писал(а):Второе поборото вызовом через start и последующим exit.
И какое же это избавление от чёрного окна?
Вполне себе вариант. Ну мелькнёт на полсекунды - и ладно. Главное - не висит пока работает ТС.
Flasher писал(а):
Mellomann писал(а):Зато работает.
Только из системной оболочки и консоли.
Что в самый раз.
Flasher писал(а): А как же исходная задача с Editor= и т. п.? %PROCESSOR_ARCHITECTURE% тут никак не годится.
Вполне себе прокатило, вчера оттестировал на win7 - работает. Осталось на некрофилах ещё погонять.
Правда, пришлось пути менять, по аналогии с RAR.EXE...
Flasher писал(а):И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Это ж гениально! Просто и гениально! Даже пути (к ТС) с пробелами не делают проблем.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Mellomann писал(а):@start totalcmd.exe /N /I="%~dp0\Wincmd0.ini"
Это ж гениально! Просто и гениально! Даже пути (к ТС) с пробелами не делают проблем.
Вариант с путем вроде выглядит ненамного сложнее:

Код: Выделить всё

start "%~dp0\totalcmd.exe" /N /I="%~dp0\Wincmd0.ini"
И при этом в разы универсальнее.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):а если из другой папки, то нет
Я и написал "коли он в корне ТС".
MVV писал(а):И если с правами админа его запускать, рабочая папка будет C:\Windows\System32
Из под юзера? Из под админа ничего подобного не происходит.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить