Страница 36 из 46
Добавлено: Сб июн 26, 2010 20:52
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.
Добавлено: Вт июн 29, 2010 18:17
ask-rus
MVV писал(а):Еще можно переделать командный файл, чтобы передавать имена как параметры - тогда будут работать в нормальной кодировке
Так и поступил.
MVV писал(а):но длина командной строки ограничена (не знаю, каков предел, в справке по ТК написано, что 32767 символов ), поэтому очень-очень много файлов не влезет.
Редко до 20 файлов пак, поэтому всё пучком. Батник работает. Благодарствую.
Добавлено: Вс июл 04, 2010 18:41
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
Добавлено: Вс июл 04, 2010 20:01
Batya
ask-rus писал(а):Какая-то мистика, но батник перестал работать
Первым делом для проверки в команде кнопки перед вызовом батника напиши "cmd /k".
Добавлено: Вс июл 04, 2010 20:33
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" всё по-прежнему.
Добавлено: Вс июл 04, 2010 21:13
MVV
А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?
А вообще, если с cmd работает, то замени cmd /k на cmd /c, и окно будет закрываться после выполнения команды.
Добавлено: Вс июл 04, 2010 22:13
ask-rus
MVV писал(а):А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?
Не знаю, как правильно это сделать.
MVV писал(а):А вообще, если с cmd работает, то замени cmd /k на cmd /c, и окно будет закрываться после выполнения команды.
Да, всё в норме.
Добавлено: Вс июл 04, 2010 23:01
MVV
ask-rus писал(а):MVV писал(а):А если вручную запустить из командной строки этот бат-файл, передав любой экзешник как параметр (запускать по Shift+Enter) - сработает?
Не знаю, как правильно это сделать.
Фокус на MultiUPX.bat, Ctrl+Shift+Enter (полное имя файла пропишется в командную строку), затем фокус на экзешник, который нужно сжать, Ctrl+Shift+Enter (полное имя экзешника добавится к командной строке), и затем Shift+Enter.
А просто запустить MultiUPX.bat двойным щелчком - по идее должна открыться консоль с предложением нажать любую клавишу, а потом закрыться - работает?
Добавлено: Пн июл 05, 2010 09:30
jentoso
А почему нельзя просто через MultiArc все сделать?
Добавлено: Пн июл 05, 2010 11:15
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 двойным щелчком - по идее должна открыться консоль с предложением нажать любую клавишу, а потом закрыться - работает?
Работает.
Добавлено: Пн июл 05, 2010 11:34
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
и процесс проходит успешно.
Добавлено: Пн июл 05, 2010 11:42
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 писал(а):некоторые исполняемые перестали жаться.
Вероятно, в именах таких файлов пробелы.
Добавлено: Пн июл 05, 2010 11:57
ask-rus
Batya писал(а):Так работает?
Работает.
Но если повторить действия с другим подопытным:
c:\TCFS2.exe
Получим:
NotCompressibleException
Как видишь, нет пробелов.
Добавлено: Пн июл 05, 2010 12:04
Batya
ask-rus писал(а):Получим:
Цитата:
NotCompressibleException
Разницу вижу только в параметре "--compress-icons=0". Попробуй без него.
Добавлено: Пн июл 05, 2010 12:10
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