Обмен кнопками

Если вы хотите поделиться с другими пользователями секретами Total Commander, знаете интересные опции, приемы, настройки, то вам сюда.

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

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

Сообщение MVV »

Проблема в том, что консоль требует имена в кодировке DOS.
Попробуй вместо %L поставить %l или %D. И скрести пальцы - если у твоих файлов нет дополнительных коротких имен, ничего не выйдет. :)

Еще можно переделать командный файл, чтобы передавать имена как параметры - тогда будут работать в нормальной кодировке, но длина командной строки ограничена (не знаю, каков предел, в справке по ТК написано, что 32767 символов :)), поэтому очень-очень много файлов не влезет. Чтобы укоротить имена, лучше передавать их без путей, при этом поле рабочей папки должно быть пустым, чтобы имена искались в текущей папке. Итак, файл:

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

@echo off
:loop
if -%1==- pause && cls && goto :EOF
"%COMMANDER_PATH%\SOFT\UPX\upx.exe" -9 --lzma --compress-icons=0 %1
shift
goto loop
Он принимает имена не в виде списка файлов, а через пробел в командной строке. В параметры кнопки надо прописать %S.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

MVV писал(а):Еще можно переделать командный файл, чтобы передавать имена как параметры - тогда будут работать в нормальной кодировке
Так и поступил.
MVV писал(а):но длина командной строки ограничена (не знаю, каков предел, в справке по ТК написано, что 32767 символов ), поэтому очень-очень много файлов не влезет.
Редко до 20 файлов пак, поэтому всё пучком. Батник работает. Благодарствую.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Какая-то мистика, но батник перестал работать в один прекрасный вчерашний день (просто моргает окно кмд). Причины мне неизвестны: восстановил раздел с ОС с LiveCD, переименовал каталог с TC, перенес батник, но потом тут же вернул его на место - больше ничего не делал.

d:\Total Commander\SOFT\UPX\upx.exe
d:\Total Commander\PLUGINS\bat\MultiUPX.bat

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

@echo off 
:loop 
if -%1==- pause && cls && goto :EOF 
"%COMMANDER_PATH%\SOFT\UPX\upx.exe" -9 --lzma --compress-icons=0 %1 
shift 
goto loop

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\PLUGINS\bat\MultiUPX.bat
%S
%COMMANDER_PATH%\ICO\UPX_2.ico
UPX


-1

«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ask-rus писал(а):Какая-то мистика, но батник перестал работать
Первым делом для проверки в команде кнопки перед вызовом батника напиши "cmd /k".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Batya

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

TOTALCMD#BAR#DATA
cmd /k "%COMMANDER_PATH%\PLUGINS\bat\MultiUPX.bat"
%S
%COMMANDER_PATH%\ICO\UPX_2.ico
UPX


-1
Так работает, но после в консоли вижу:
C:\>
Собственно, это было проверкой (?) и проверка прошла.
Без "cmd /k" всё по-прежнему.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?

А вообще, если с cmd работает, то замени cmd /k на cmd /c, и окно будет закрываться после выполнения команды.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

MVV писал(а):А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?
Не знаю, как правильно это сделать.
MVV писал(а):А вообще, если с cmd работает, то замени cmd /k на cmd /c, и окно будет закрываться после выполнения команды.
Да, всё в норме.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ask-rus писал(а):
MVV писал(а):А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?
Не знаю, как правильно это сделать.
Фокус на MultiUPX.bat, Ctrl+Shift+Enter (полное имя файла пропишется в командную строку), затем фокус на экзешник, который нужно сжать, Ctrl+Shift+Enter (полное имя экзешника добавится к командной строке), и затем Shift+Enter.

А просто запустить MultiUPX.bat двойным щелчком - по идее должна открыться консоль с предложением нажать любую клавишу, а потом закрыться - работает?
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

А почему нельзя просто через MultiArc все сделать?
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

MVV писал(а):Фокус на MultiUPX.bat, Ctrl+Shift+Enter (полное имя файла пропишется в командную строку), затем фокус на экзешник, который нужно сжать, Ctrl+Shift+Enter (полное имя экзешника добавится к командной строке), и затем Shift+Enter.
Я так и делал, только ручками.
"d:\Total Commander\PLUGINS\bat\MultiUPX.bat" "c:\Program Files\Atlantis\Atlantis.exe"
Неправильная команда или имя файла
MVV писал(а):А просто запустить MultiUPX.bat двойным щелчком - по идее должна открыться консоль с предложением нажать любую клавишу, а потом закрыться - работает?
Работает.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

MVV
Тут ещё вот в чем странность. Я заметил, что с твоим батником

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

TOTALCMD#BAR#DATA
cmd /c "%COMMANDER_PATH%\PLUGINS\bat\MultiUPX.bat"
%S
%COMMANDER_PATH%\ICO\UPX_2.ico
UPX

0
-1
некоторые исполняемые перестали жаться.
NotCompressibleException
В то время, как просто переношу исполняемый на кнопку

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

TOTALCMD#BAR#DATA
D:\Total Commander\SOFT\UPX\upx.exe
-9 --lzma
D:\Total Commander\TOTALCMD.EXE,3

D:\Total Commander\SOFT\UPX\

-1
и процесс проходит успешно.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ask-rus писал(а):Цитата:
"d:\Total Commander\PLUGINS\bat\MultiUPX.bat" "c:\Program Files\Atlantis\Atlantis.exe"

Цитата:
Неправильная команда или имя файла
Открой консоль. Выполни команды:

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

c:
cd c:\Program Files\Atlantis\
"d:\Total Commander\PLUGINS\bat\MultiUPX.bat" Atlantis.exe
Так работает?
ask-rus писал(а):некоторые исполняемые перестали жаться.
Вероятно, в именах таких файлов пробелы.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Batya писал(а):Так работает?
Работает.
Но если повторить действия с другим подопытным:
c:\TCFS2.exe
Получим:
NotCompressibleException
Как видишь, нет пробелов.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ask-rus писал(а):Получим:
Цитата:
NotCompressibleException
Разницу вижу только в параметре "--compress-icons=0". Попробуй без него.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Попробовал:

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

@echo off 
:loop 
if -%1==- pause && cls && goto :EOF 
"%COMMANDER_PATH%\SOFT\UPX\upx.exe" -9 --lzma %1 
shift 
goto loop
c:\TCFS2.exe
Аналогия в общем.
NotCompressibleException
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить