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

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

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

Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ask-rus писал(а):Аналогия в общем.
Хм...
Вставь для проверки в батник после "if -%1==- pause && cls && goto :EOF":

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

@cd
@echo %1
@pause
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

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

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

Сообщение Batya »

А если в кнопке вызова батника указать "Путь запуска":

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

%COMMANDER_PATH%\SOFT\UPX\
А в параметрах вместо "%S": :?:
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

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

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

-1
D:\Total Commander\SOFT\UPX
TCFS2.exe
...
upx: TCFS2.exe: FileNotFoundException: TCFS2.exe

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

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

-1
upx: c:\TCFS2.exe: NotCompressibleException
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

ask-rus писал(а):NotCompressibleException
Создайте временную папку, поместите в неё UPX.exe и TCFS2.exe
Запустите в этой папке CMD, а затем в консоли: upx -9 --lzma TCFS2.exe

Получаете NotCompressibleException? Вывод - ни TC с его "кнопками", ни *.bat тут ни при чём.
Последний раз редактировалось GGS Пн июл 05, 2010 15:09, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ask-rus писал(а):Тут ещё вот в чем странность. Я заметил, что с твоим батником некоторые исполняемые перестали жаться.
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
и процесс проходит успешно.
Вообще, когда ты тащишь на кнопку, параметров, прописанных в кнопке (т.е., -9 --lzma), программа не получает, только имя перетаскиваемого файла.

Кстати, это в твоих параметрах -9 --lzma и ошибка!
Пишу в консоли:

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

upx -9 --lzma f:\TCFS2.exe
Получаю:

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

upx: f:\TCFS2.exe: NotCompressibleException
А пишу:

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

upx f:\TCFS2.exe
Получаю:

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

Packed 1 file.
Так что батник тут не при чем. :D
Видимо, просто UPX не каждый файл может сжимать в LZMA. Или действительно возникает исключение при сжатии, что может говорить об ошибке в коде UPX. :roll:
Кстати, если сжимать TCFS2.exe без дополнительных опций, то размер TCFS2.exe уменьшается с 8192 до 7168 - сжимать его просто глупо. :D
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

GGS писал(а):Создайте временную папку, поместите в неё UPX.exe и TCFS2.exe
Запустите в этой папке CMD, а затем в консоли: upx -9 --lzma TCFS2.exe
Поехали.
c:\123\run_pause.bat
c:\123\tcfs2.exe
c:\123\upx.exe
Чтобы проследить - run_pause.bat:

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

@echo off
%*
echo --------
pause
cls

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

cd c:\123\

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

c:\123\run_pause.bat upx tcfs2.exe
Упаковался файл.

Без run_pause.bat кмд мигает, файл не пакуется.
С консоли пакуется...

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

Сообщение Batya »

MVV писал(а):Вообще, когда ты тащишь на кнопку, параметров, прописанных в кнопке (т.е., -9 --lzma), программа не получает, только имя перетаскиваемого файла.
О! А я и не был в курсе этого момента. Надо запомнить.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Batya писал(а):
MVV писал(а):Вообще, когда ты тащишь на кнопку, параметров, прописанных в кнопке (т.е., -9 --lzma), программа не получает, только имя перетаскиваемого файла.
О! А я и не был в курсе этого момента. Надо запомнить.
Кстати, проверил сейчас - если параметры прописаны в строке команды, они передаются программе. Но параметры, которые прописаны в строке параметров - нет. Это тоже может быть полезно для перетаскивания с сохранением части параметров.
Bubek
Сообщения: 20
Зарегистрирован: Сб июл 21, 2007 10:51

Сообщение Bubek »

Давно хотел вот такую кнопку (очень часто нужно дать комментарий к какому-нибудь файлу) "Создание тхт файла с названием выделенного файла и его открытие", - приходилось совершать несколько действий, теперь одно.

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

TOTALCMD#BAR#DATA
cmd /c
echo.>>%O.txt&&start notepad.exe /i %P%O.txt
%commander_path%\shell32.dll,1
Создание и открытие тхт файла с названием выделенного файла

1
-1

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

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

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\SOFT\USBDeview\USBDeview.exe
/disable_by_class 08;06;50
%COMMANDER_PATH%\ICO\1.ico
Безопасное  и з в л е ч е н и е  USB-накопителя
%COMMANDER_PATH%\SOFT\USBDeview\
0
-1

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\SOFT\USBDeview\USBDeview.exe
/enable_by_class 08;06;50
%COMMANDER_PATH%\ICO\2.ico
З а п у с к  USB-накопителя
%COMMANDER_PATH%\SOFT\USBDeview\
0
-1
http://www.nirsoft.net/utils/usb_devices_view.html
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Вот командник для UPX, которым я пользуюсь:

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

@Echo Off
SetLocal
Set #I=
Set #J=
Set #P=%~2
If /i _%1 EQU _/c (Set #J=COMPRESS)
If /i _%1 EQU _/d (Set #J=DECOMPRESS)
If Not Defined #J Exit

:SHIFTPARAM
If _%CD:~-1,1% EQU _\ (Set #P=%CD%%#P%) Else (Set #P=%CD%\%#P%)
If _%#P:~-1,1%_ EQU _ _ (Set #P=%#P:~0,-1%)
If _%#P:~-1,1%_ EQU _\_ (Set #P=%#P:~0,-1%)
Call :%#J% "%#P%"
Shift
Set #P=%~2
If Defined #P GoTo :SHIFTPARAM
Exit

:COMPRESS
Title Compress Applications
Set #P=%COMMANDER_PATH%\UniExtract\bin\Upx.exe
If Not Exist "%~1\*.*" GoTo :COMPRESSFILE
SetLocal EnableDelayedExpansion
For /r %1 %%i In (*.exe,*.dll,*.bin,*.bpl,*.irc,*.pyd,*.wcx,*.wfx,*.wlx,*.pfl,*.ax,*.sfx) Do (
	"%#P%" --best --compress-icons=0 --brute --crp-ms=999999 -k "%%~fi"
	"%#P%" -t "%%~fi"
	Set #I=%%~fi
	If !ERRORLEVEL! NEQ 0 (
		Move /y "!#I:~0,-1!^~" "%%~fi") Else (Del /q "!#I:~0,-1!^~"))
Exit /b
:COMPRESSFILE
For %%i In (exe,dll,bin,bpl,irc,pyd,wcx,wfx,wlx,pfl,ax,sfx) Do (If /i .%~x1==..%%i Set #I=!)
If Not Defined #I Exit /b
"%#P%" --best --compress-icons=0 --brute --crp-ms=999999 -k %1
"%#P%" -t %1
Set #I=%~1
If %ERRORLEVEL% NEQ 0 (Move /y "%#I:~0,-1%~" "%#I%") Else (Del /q "%#I:~0,-1%~")
Exit /b

:DECOMPRESS
Title DeCompress Applications
If Not Exist "%~1\*.*" GoTo :DECOMPRESSFILE
For /r %1 %%i In (*.exe,*.dll,*.bin,*.bpl,*.irc,*.pyd,*.wcx,*.wfx,*.wlx,*.pfl,*.ax,*.sfx) Do (
	"%COMMANDER_PATH%\UniExtract\bin\Upx.exe" -d "%%~fi")
Exit /b
:DECOMPRESSFILE
For %%i In (exe,dll,bin,bpl,irc,pyd,wcx,wfx,wlx,pfl,ax,sfx) Do (If /i .%~x1==..%%i Set #I=!)
If Not Defined #I Exit /b
"%COMMANDER_PATH%\UniExtract\bin\Upx.exe" -d %1
Exit /b
Сергей Ёлкин (2005 - 2009)
Первый ключ - или /c - compress, или /d - decompress, указывается, как правильно было сказано, в строке команды, а не в строке параметров. Имена файлов/папок передаются с помощью %S, тогда логика такая:
- файл под курсором, если нет выбранных
- файлы в папке под курсором с рекурсией
- выбранные файлы и в выбранных папках с рекурсией
Список обрабатываемых расширений см. в командах For
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

Serge Yolkin
Не работает.
Поменял пути на свои.
Кнопка:

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

TOTALCMD#BAR#DATA
D:\totalcmd\123.cmd /c
%S
D:\totalcmd\TOTALCMD.EXE,3



-1
Что упустил?
Последний раз редактировалось ask-rus Пн июл 19, 2010 14:39, всего редактировалось 1 раз.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

ask-rus
На вид, вроде все правильно. Может, через текст-бокс какие символы заменяются... Могу кинуть рабочий файл - скажи куда. На всякий: а как не работает? Вставь две строчки перед меткой :SHIFTPARAM

Echo %*
Pause

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

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

Serge Yolkin писал(а):а как не работает?
Кмд мигает/мерцает, упаковки не происходит.
Serge Yolkin писал(а):Вставь две строчки перед меткой :SHIFTPARAM
Сделал:

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

Echo %*
Pause[/quote]
@Echo Off 
SetLocal 
Set #I= 
Set #J= 
Set #P=%~2 
If /i _%1 EQU _/c (Set #J=COMPRESS) 
If /i _%1 EQU _/d (Set #J=DECOMPRESS) 
If Not Defined #J Exit 

Echo %* 
Pause
:SHIFTPARAM 
If _%CD:~-1,1% EQU _\ (Set #P=%CD%%#P%) Else (Set #P=%CD%\%#P%) 
If _%#P:~-1,1%_ EQU _ _ (Set #P=%#P:~0,-1%) 
If _%#P:~-1,1%_ EQU _\_ (Set #P=%#P:~0,-1%) 
Call :%#J% "%#P%" 
Shift 
Set #P=%~2 
If Defined #P GoTo :SHIFTPARAM 
Exit 

:COMPRESS 
Title Compress Applications 
Set #P=%COMMANDER_PATH%\SOFT\UPX\upx.exe 
If Not Exist "%~1\*.*" GoTo :COMPRESSFILE 
SetLocal EnableDelayedExpansion 
For /r %1 %%i In (*.exe,*.dll,*.bin,*.bpl,*.irc,*.pyd,*.wcx,*.wfx,*.wlx,*.pfl,*.ax,*.sfx) Do ( 
   "%#P%" --best --compress-icons=0 --brute --crp-ms=999999 -k "%%~fi" 
   "%#P%" -t "%%~fi" 
   Set #I=%%~fi 
   If !ERRORLEVEL! NEQ 0 ( 
      Move /y "!#I:~0,-1!^~" "%%~fi") Else (Del /q "!#I:~0,-1!^~")) 
Exit /b 
:COMPRESSFILE 
For %%i In (exe,dll,bin,bpl,irc,pyd,wcx,wfx,wlx,pfl,ax,sfx) Do (If /i .%~x1==..%%i Set #I=!) 
If Not Defined #I Exit /b 
"%#P%" --best --compress-icons=0 --brute --crp-ms=999999 -k %1 
"%#P%" -t %1 
Set #I=%~1 
If %ERRORLEVEL% NEQ 0 (Move /y "%#I:~0,-1%~" "%#I%") Else (Del /q "%#I:~0,-1%~") 
Exit /b 

:DECOMPRESS 
Title DeCompress Applications 
If Not Exist "%~1\*.*" GoTo :DECOMPRESSFILE 
For /r %1 %%i In (*.exe,*.dll,*.bin,*.bpl,*.irc,*.pyd,*.wcx,*.wfx,*.wlx,*.pfl,*.ax,*.sfx) Do ( 
   "%COMMANDER_PATH%\SOFT\UPX\upx.exe" -d "%%~fi") 
Exit /b 
:DECOMPRESSFILE 
For %%i In (exe,dll,bin,bpl,irc,pyd,wcx,wfx,wlx,pfl,ax,sfx) Do (If /i .%~x1==..%%i Set #I=!) 
If Not Defined #I Exit /b 
"%COMMANDER_PATH%\SOFT\UPX\upx.exe" -d %1 
Exit /b 
Сергей Ёлкин (2005 - 2009)
Serge Yolkin писал(а):и скажи, что получилось.
/c winamp.exe
Для продолжения нажмите любую клавишу . . .
Serge Yolkin писал(а):Могу кинуть рабочий файл - скажи куда.
Куда угодно, чтобы любой мог взять.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить