Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Работа параметров %P%S
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Tue Aug 17, 2010 14:20    Post subject: Работа параметров %P%S Reply with quote

Что-то я не могу заставить работать эти параметры.
Сделал тестовый батник
Code:
@echo off
Echo %1
Echo %2
Pause
Вытащил его на панель ТС и прописал параметры
Code:
TOTALCMD#BAR#DATA
"c:\My Downloads\pngslim\pngslim.cmd"
%P%S
%COMMANDER_PATH%\TOTALCMD.EXE,2
pngslim
c:\My Downloads\pngslim\

-1
Выделяю на активной панели несколько (3) файлов и нажимаю на кнопку. Мелькает консольное окно и закрывается. Перетаскиваю эти файлы на кнопку - в консольном окне вижу имя только одного файла.
Разве %S не должен передавать батнику все выделенные файлы?
Почему при нажатии на кнопку окно только мелькает?

Версия TC 7.55a, WinXP SP3

Спасибо.
_________________
Win7 SP1 Ultimate x64, TC8.52a x64


Last edited by gora on Tue Aug 17, 2010 14:59; edited 1 time in total
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Tue Aug 17, 2010 14:50    Post subject: Reply with quote

1) добавь эхирование вплоть до echo %9 - увидишь до 9 параметров. Чтобы увидеть больше, надо извращаться с shift;
2) А если не перетаскивать на кнопку, а нажимать оную? Не проще разве? Не надо целиться, крысу никуда не тащить... Нажал и вуаля;
3) у меня окно висит (W7, TC 7.55). Поменяй, что ли, cmd на bat.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Tue Aug 17, 2010 15:08    Post subject: Reply with quote

Вахмурка wrote:
1) добавь эхирование вплоть до echo %9 - увидишь до 9 параметров. Чтобы увидеть больше, надо извращаться с shift;
2) А если не перетаскивать на кнопку, а нажимать оную? Не проще разве? Не надо целиться, крысу никуда не тащить... Нажал и вуаля;
3) у меня окно висит (W7, TC 7.55). Поменяй, что ли, cmd на bat.
Как вывести все параметры в батнике я знаю и даже больше 10 (%*), но у меня уже второго параметра нет, а есть только первый!!!
И поведение разное, при нажатии консольное окно только мелькает.
Попросил двоих протестить данную ситуацию и получил:
У одного на WinXP SP2 TC 7.04 - все как у меня
У второго на Win7 х86 ТС 7.55 - при перетаскивании одно имя в консоли, при нажатии два имени в консоли.
замена расширения ни чего не изменила (менял конечно же и у файла и в кнопке Wink ).
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Aug 17, 2010 18:29    Post subject: Reply with quote

WinXP SP3 рус, ТС 7.55a, кнопки нажимаю.

"png slim.cmd" — мелькает окно
cmd /c "png slim.cmd" — работает правильно
cmd /c "pngslim.cmd" — работает правильно
"pngslim.cmd" — работает правильно

Избегайте имён с пробелами и/или явно указывайте интерпретатор cmd.exe

Добавление
работает правильно – это если только в именах передаваемых файлов нет пробелов. Иначе нужно пользоваться советом MVV


Last edited by Tol!k on Tue Aug 17, 2010 19:24; edited 1 time in total
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Tue Aug 17, 2010 18:41    Post subject: Reply with quote

Tol!k wrote:
Избегайте имён с пробелами и/или явно указывайте интерпретатор cmd.exe
Имя у меня без пробела, пробел есть в пути, но путь\имя заключены в кавычки и сделано это самим ТС. Правильно ли я Вас понял, что пробелы вообще не допустимы и ТС с ними работать не может? Почему тогда перетаскиванием батник, хоть и не со всеми параметрами, но запускается и работает?

PS
Проверил сейчас на домашнем компьютере (Win7 x64) и с пробелом и без него: нажатием работает правильно (оба имени в окне консоли), перетаскиванием - только первое имя.
Странно все это...
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Aug 17, 2010 19:14    Post subject: Reply with quote

gora wrote:
Имя у меня без пробела, пробел есть в пути
Мальчик, девочка. Какая в **** разница? © Анекдот

gora wrote:
Правильно ли я Вас понял, что пробелы вообще не допустимы и ТС с ними работать не может?
ТС здесь вообще не причём. Это же cmd.exe работает

gora wrote:
Почему тогда перетаскиванием батник, хоть и не со всеми параметрами, но запускается и работает?
Не знаю

gora wrote:
Проверил сейчас на домашнем компьютере (Win7 x64) и с пробелом и без него: нажатием работает правильно
cmd.exe это софт. Как и в любом софте, в нём есть баги. А баги иногда исправляют

gora wrote:
перетаскиванием - только первое имя
М.б. TC при перетаскивании передаёт %P%N, а не то, что указано в параметрах


Сделал уточнение в предыдущем посте
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Aug 17, 2010 19:43    Post subject: Reply with quote

Вообще, про CMD.exe могу прояснить ту проблему - он пытается снять со всей строки обрамляющие кавычки только в том случае, если первым символом строки идет кавычка. Отсюда правило передачи параметров для CMD.exe: если строка, которую мы хотим исполнить в CMD, начинается кавычкой, то необходимо добавить обрамляющую пару кавычек.

А насчет проблемы с параметрами скажу, что при перетаскивании файлов на кнопку ТК начисто игнорирует поле команды кнопки и просто передает один файл как параметр (опытным путем установлено, что этот файл - первый среди выделенных). Поэтому, если вы пишете хитромудрые строки параметров, просто нажимайте на кнопку, а не перетаскивайте на нее файлы.

Тестировал предложенный в первом посте файл и кнопку:
Code:
TOTALCMD#BAR#DATA
"D:\TEMP\my downloads\1.bat"
%P%S
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1

Всё работает без проблем. Перетаскиваю - одно имя, нажимаю - два. А если написать в батнике echo %*, то во втором случае вижу имена всех выделенных файлов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Tue Aug 17, 2010 20:20    Post subject: Reply with quote

MVV wrote:
А насчет проблемы с параметрами скажу, что при перетаскивании файлов на кнопку ТК начисто игнорирует поле команды кнопки и просто передает один файл как параметр (опытным путем установлено, что этот файл - первый среди выделенных). Поэтому, если вы пишете хитромудрые строки параметров, просто нажимайте на кнопку, а не перетаскивайте на нее файлы.
А как трактовать это в справке?
Quote:
Параметры: Здесь вы можете определить параметры командной строки. Неизменяемые параметры должны быть указаны непосредственно после имени файла, потому что иначе при использовании Drag&Drop программе будет передано только имя файла.
Я так понимаю, что перетаскивание поддерживается и передача параметров при этом тоже должна осуществятся. Правда я не понял из справки КАК нужно правильно записать строку.
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Aug 17, 2010 21:08    Post subject: Reply with quote

MVV wrote:
Code:
TOTALCMD#BAR#DATA
"D:\TEMP\my downloads\1.bat"
%P%S
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1

Всё работает без проблем.
Win7 ?
На WinXP стабильно отрицательный результат.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Aug 18, 2010 09:58    Post subject: Reply with quote

gora wrote:
А как трактовать это в справке?
Quote:
Параметры: Здесь вы можете определить параметры командной строки. Неизменяемые параметры должны быть указаны непосредственно после имени файла, потому что иначе при использовании Drag&Drop программе будет передано только имя файла.
Я так понимаю, что перетаскивание поддерживается и передача параметров при этом тоже должна осуществятся. Правда я не понял из справки КАК нужно правильно записать строку.

Хм, оказывается, эта фича даже документированаSmile поясняю: параметры, указанные непосредственно в строке "Команда:" после пути к программе, будут переданы в любом случае, а параметры, указанные в строке "Параметры:" - только если кнопка нажата, а не файл брошен на неё. Но здесь кроется другая проблема - в поле "Команда:" не поддерживаются %-параметры типа %P, %S и %N. Зато поддерживаются переменные окружения. Rolling Eyes

Tol!k wrote:
MVV wrote:
Всё работает без проблем.
Win7 ?
На WinXP стабильно отрицательный результат.

Хм, вообще, да. Проверю на виртуальной машине с XP.

А действительно, на XP не работает. Ну это уже глюки винды. Видимо, связанные как раз с тем, что командные файлы обрабатываются этим самым командным интерпретатором, а тот иначе обрабатывает кавычки, при этом путь к файлу, содержащий пробелы, рушится, и в мелькнувшем черном окне на мгновение появляется надпись вида:
Code:
"D:\TEMP\my" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Причем, судя по тому, что поведение программы CMD.exe различно в XP и 7, создать универсальную кнопку сложно, для XP работает такая:
Code:
TOTALCMD#BAR#DATA
cmd /c "C:\TEMP\my downloads\1.bat"
%P%S
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1

А для 7 - такая:
Code:
TOTALCMD#BAR#DATA
cmd /c ""C:\TEMP\my downloads\1.bat"
%P%S"
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1

(разница - как раз в той самой паре кавычек, которую CMD из семерки удаляет - кстати, заодно уточнили, что командный процессор в семерке эту кавычку удаляет, а в XP - нет)

Здесь очень уместной будет одна из фраз, которую Tol!k довольно часто пишет (но почему-то здесь еще не написал) - пробелы - зло! Very Happy
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Wed Aug 18, 2010 10:27    Post subject: Reply with quote

MVV wrote:
поясняю: параметры, указанные непосредственно в строке "Команда:" после пути к программе, будут переданы в любом случае, а параметры, указанные в строке "Параметры:" - только если кнопка нажата, а не файл брошен на неё.
Беда в том, что в строке "Команда" переменные %P%S не работают. И как не записывай их, список файлов перетаскиванием не передается. Наверное, так прямо и надо было написать в справке, иначе звучит, что перетаскивание поддерживается и написано это в описании переменных, а не где-то в другом месте. ИМХО
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10252
Location: Россия, Саратов

Post (Separately) Posted: Wed Aug 18, 2010 11:01    Post subject: Reply with quote

gora
Во-первых, есть параметры командной строки вообще и есть специальные параметры панели инструментов или меню "Запуск". Во-вторых, %P%S — это именно специальные параметры (предназначенные и описанные только для соответствующего поля), а не переменные. В-третьих, оговорка про неизменяемые параметры в справке сделана сразу же, как только речь вообще заходит о параметрах, другого подходящего места нет.
Что касается ясности изложения – в русском переводе мы следовали тут написанному у Гислера. Если есть конкретные предложения, как это можно изложить в русификации иначе — готов обсудить здесь.
А переменные типа %Commander_Path% и пр. поддерживаются, кстати, и в поле "Параметры". Если знаки процента не забыть удвоить.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.


Last edited by Avada on Wed Aug 18, 2010 11:36; edited 1 time in total
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Wed Aug 18, 2010 11:19    Post subject: Reply with quote

Avada
Написанное мной, относительно справки, "не критики ради, а пользы для". Вариант, существующий в справке, мне (простому пользователю) не понятен, о чем я и написал. Возможно, что и у Гислера написано так же, но от этого мне не легче. Sad Может как-то сформулировать это по-понятнее!? Как, сам не знаю, т.к., не понимаю сути (тонкостей) там написанного.

А за Вашу работу, конечно спасибо!
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Aug 18, 2010 12:00    Post subject: Reply with quote

Хоть убейте, а не пойму, на кой кому-то сдалось перетаскивать выделенные файлы на кнопку, когда можно просто ее нажать, и при этом не мучаться самому, и не мучать других. Very Happy

А переменные окружения в строке параметров тотал не поддерживает. С удвоенными знаками процента мы лишь передаем программе знаки процента с текстом между ними, но не содержимое переменной окружения. В поле команды же переменные именно раскрываются.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10252
Location: Россия, Саратов

Post (Separately) Posted: Wed Aug 18, 2010 12:22    Post subject: Reply with quote

MVV wrote:
А переменные окружения в строке параметров тотал не поддерживает.

А, пардон, мы же это уже обсуждали. Да, действительно, я был неправ.

MVV wrote:
Хоть убейте, а не пойму, на кой кому-то сдалось перетаскивать выделенные файлы на кнопку, когда можно просто ее нажать, и при этом не мучаться самому, и не мучать других. Very Happy

Аналогичный вопрос уже неоднократно вертелся у меня на языке по ходу бурных дискуссий о других случаях перетаскивания в TC, когда на самом деле гораздо проще щёлкнуть, чем тащить. Very Happy
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group