Рестарт/перезапуск TC

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Соорудил скрипт, который перезапускает TC с другой разрядностью

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

:: Перезапуск TC в другой разрядности
:: x32<=>x64

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION
set x64=Totalcmd64.EXE

FOR /F %%i IN ('TASKLIST /NH /FI "IMAGENAME eq totalcmd*"') DO (
    FOR /F "tokens=2 delims==" %%j IN ('wmic process where "name='%%i'" get ExecutablePath /FORMAT:LIST') DO (
    set line=%%j
    taskkill /im %%i >NUL 
    IF %%i==!x64! (start !line:64=!) ELSE (start !line:~0,-5!64!line:~-5!)
    )
)

exit
Если соорудить из этого скрипта exe-шник то при перезапуске теряется фокус на приложении, не критично, но не совершенно. Можно такое исправить? Сам bat-ник, кстати, не фокус не теряет.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Плохо всё это работает. Из 32-битного TC в 64-битный худо-бедно переключает: экзешник — с потерей текущего каталога (открывается тот, который был при последнем выходе из TC), батник без этого, но, естественно, с консольным окошком. А обратного переключения на 32-битный TC из 64-битного у меня вообще нет: появляется сообщение об ошибке, что не найден файл ТOTALCMD6464.EXE (именно так!), в случае с батником — в паре с незакрытым консольным окном.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Avada писал(а):sergiokapone
Плохо всё это работает. Из 32-битного TC в 64-битный худо-бедно переключает: экзешник — с потерей текущего каталога (открывается тот, который был при последнем выходе из TC), батник без этого, но, естественно, с консольным окошком. А обратного переключения на 32-битный TC из 64-битного у меня вообще нет: появляется сообщение об ошибке, что не найден файл ТOTALCMD6464.EXE (именно так!), в случае с батником — в паре с незакрытым консольным окном.
Я тестил на Win10 на двух компах, скорее всего у Вас другая винда. А что выдает команда

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

wmic process where "name='totalcmd.exe'" get ExecutablePath /FORMAT:LIST

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

wmic process where "name='totalcmd64.exe'" get ExecutablePath /FORMAT:LIST

если просто набрать в консоли из x32 и x64, соответственно?

Или, может еще вариант, у Вас путь к totalcmd.exe содержит пробелы.

Добавлено спустя 37 минут:

Как вариант, попробуйте это скрипт

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

::wincmd.ini
::[Shortcuts]
::C+R=em_Restart_x32_x64_TC
::
::usercmd.ini
::[em_Restart_x32_x64_TC]
::cmd=%commander_path%\Scripts\Restart_x86-x64.cmd
::menu=Перезапуск TC в другой разрядности

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION
set x64=Totalcmd64.EXE
set x32=totalcmd.EXE

FOR /F %%i IN ('TASKLIST /NH /FI "IMAGENAME eq totalcmd*"') DO (
    taskkill /im %%i >NUL
    IF %%i==!x64! (  
        start !commander_path!\!x32! /F
        echo ============ 
        echo Запуск  x32
        echo ============
        timeout 1 >nul
    ) ELSE (
            start !commander_path!\!x64! /F
            echo ============ 
            echo Запуск  x64
            echo ============
            timeout 1 >nul
      )
)

exit
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
У меня Windows 7 x64, путь к TC пробелов не содержит.
Выполнение в консоли даёт ExecutablePath=C:\Totalcmd\TOTALCMD.EXE и соответствующий аналоги для 64-битного TC.
Скрипт в каком формате?
И цитировать меня полностью не надо. И так понятно, кто, с кем и о чём общается.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

.cmd или .bat, одинаково.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Да, сейчас батник вроде бы работает прилично (тщательно не проверял).
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

exe-шник на основе батника
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Нет, этот экзешник меня совершенно не устраивает. Во-первых теряются текущие пути. Во-вторых, обратное переключение из x64 не работает. При ближайшем рассмотрении последняя проблема есть и в батнике (утром дома вроде бы это работало, сейчас на другой машине с теми же системой и TC — нет). В-третьих, идёт наращивание номеров копий окна TC.
Я использую экзешник на основе этого скрипта из текущей темы с последующими модификациями (раз, два).
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Avada,
я, кажись, понимаю в чем проблема,
если Вам не трудно, можете проверить этот батник с сообщениями для debug'инга?

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

@echo off 

SETLOCAL ENABLEDELAYEDEXPANSION 
set "x64=Totalcmd64.EXE"
set "x32=totalcmd.EXE"

FOR /F %%i IN ('TASKLIST /NH /FI "IMAGENAME eq totalcmd*"') DO (
    echo Closing %%i
    timeout 2 >nul
    taskkill /im %%i >NUL 
    IF "%%i" EQU "!x64!" (
        echo  "%%i" , "!x64!"
        echo Starting   !commander_path!\!x32!
        timeout 2 >nul 
        start !commander_path!\!x32! /F 
    ) ELSE (   
            echo  "%%i" , "!x64!"
            echo Starting !commander_path!\!x64!
            timeout 2 >nul
            start !commander_path!\!x64! /F  
      ) 
)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Батник работает приемлемо по всем указанным выше пунктам.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Avada,
спасибо, проблема, думаю, была в лишних пробелах в переменных x64 и x32.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Понятно. Будет новый экзешник — гляну. Но заглавные буквы и точки забывать в сообщениях не надо.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

exe-шник (скачивание сразу, при нажатии).
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sergiokapone
Ровно тот же набор проблем, что и раньше. Число окон TC то увеличивается, то уменьшается с наращиванием при этом цифр для номеров копий, текущие каталоги не сохраняются, обратного переключения с x64 нет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Avada,
наверное exe-шником пользоваться не целесообразно. Я компилировал в
Quick Batch File Compiler. Может попробую, как-нибудь, другой компилятор.
Ответить