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 Previous  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
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

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

Avada wrote:
А, пардон, мы же это уже обсуждали.

Это уже давно обсуждалось в отдельной теме.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
GGS



Joined: 02 May 2009
Posts: 322

Post (Separately) Posted: Wed Aug 18, 2010 15:49    Post subject: Reply with quote

Avada wrote:
о других случаях перетаскивания в TC, когда на самом деле гораздо проще щёлкнуть, чем тащить

Вот пример кнопки, в которой я осознанно использую разницу "щёлкнуть - тащить"
Code:
TOTALCMD#BAR#DATA
%Commander_Path%\Plugins\wlx\Imagine\Imagine.exe
/browse:"%P"
%Commander_Path%\Plugins\wlx\Imagine\Imagine.exe
Imagine

0
-1

Попробуйте её в папке с картинками.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Wed Aug 18, 2010 15:49    Post subject: Reply with quote

Нажатием на кнопку я просто запускаю программу.
Перетаскиванием на кнопку открываю нужный файл в программе.
И то и другое действие я делаю по нескольку раз за день, различая для себя когда какое действие я хочу выполнить.
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Wed Aug 18, 2010 17:35    Post subject: Reply with quote

MVV wrote:
Причем, судя по тому, что поведение программы 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
Нет. Как я уже уточнял выше, такая кнопка работает (на XP) только если в полных именах передаваемых файлов нет пробелов, т.ч. не может считаться рабочей.

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


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

Проверь-ка на 7 такую конструкцию:
Code:
TOTALCMD#BAR#DATA
cmd /c call "C:\TEMP\my downloads\1.bat"
%P%S
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1
На XP она работает отлично.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Wed Aug 18, 2010 17:54    Post subject: Reply with quote

Кстати, да, вызов команды call избавляет командную строку от открывающей кавычки, следовательно, кнопка должна быть универсальной. Но такое извращение отнюдь не очевидно. Very Happy

Загрузил виртуальную машину с семеркой - кнопка работает и там, что и следовало ожидать.

Tol!k wrote:
Нет. Как я уже уточнял выше, такая кнопка работает (на XP) только если в полных именах передаваемых файлов нет пробелов, т.ч. не может считаться рабочей.

Shocked действительно на XP не работает... Вот уж ни разу не врублюсь, почему... мелкомягкие тут разорвали мой мозг! Surprised

Работает: cmd /c "F:\TEMP\my downloads\1.bat" D:\test
Не работает: cmd /c "F:\TEMP\my downloads\1.bat" "D:\Program Files"
Но работает: cmd /c ""F:\TEMP\my downloads\1.bat" "D:\Program Files""

Хрен поймешь логику ХРенового командного процессора... Наверное, женская... Very Happy

Хм, кстати, вот такая кнопка тоже работает везде, хотя и смотрится тупо:
Code:
TOTALCMD#BAR#DATA
cmd /c ""F:\TEMP\my downloads\1.bat"
%P%S"
%COMMANDER_PATH%\TOTALCMD.EXE
pngslim


-1

_________________
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 18:22    Post subject: Reply with quote

MVV wrote:
Хрен поймешь логику ХРенового командного процессора... Наверное, женская... Very Happy

Из справки по cmd.exe:
Quote:
Если указаны ключи /C или /K, то остальная часть командной строки после
такого ключа обрабатывается как командная строка, а обработка символов
кавычек (") ведется по следующим правилам:

1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:

- ключ /S отсутствует
- есть ровно два символа кавычек
- между ними нет других специальных символов, как то: &()@^|
- между ними имеются один или несколько пробелов
- строка, заключенная в кавычки, является именем исполнимого
файла.

2. В противном случае, проверяется первый символ, и если он является
символом кавычек, то он удаляется, также удаляется последний
символ кавычек в командной строке, а весь текст после этого
последнего символа кавычек сохраняется.

_________________
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: Wed Aug 18, 2010 18:23    Post subject: Reply with quote

gora wrote:
Quote:
1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:
...
- есть ровно два символа кавычек
...
Предугадать это не возможно, т.ч. нужно обходить.
MVV wrote:
Загрузил виртуальную машину с семеркой - кнопка работает и там, что и следовало ожидать.
Ну и отличненько. Ставим штамп [рекомендовано]
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Thu Aug 19, 2010 09:47    Post subject: Reply with quote

ХР снимает кавычки, если кавычка - первый символ строки параметров, поэтому, если поставить перед "%Р какой-нибудь ненужный параметр, все будет работать. Проверял на пользовательской команде (em_...), строка параметров:
Code:
param= a %P%N "%T%O"
в батнике вместо %1, %2 обрабатываем, соответственно, %2, %3. Для "%P%S" с обработкой в цикле - просто поставить shift в начале цикла, а не в конце.

Last edited by Serge Yolkin on Thu Aug 19, 2010 11:16; edited 1 time in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Thu Aug 19, 2010 09:49    Post subject: Reply with quote

Чуть не забыл - пустой параметр надо ставить в строке параметров, а не в строке команды. Почему - не знаю.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Aug 19, 2010 12:13    Post subject: Reply with quote

Если параметры содержат пробелы, то так все равно не работает:
Code:
TOTALCMD#BAR#DATA
cmd /c "F:\Temp\my downloads\1.bat"
o %P%S
%COMMANDER_PATH%\TOTALCMD.EXE,3
1


-1

А с call работает и без таких извращений.

И вообще нелогичное поведение - проверять кавычку перед первым параметром, а не перед нулевым - нулевой параметр идет в командной строке CMD сразу после /C, а первый еще и найти надо.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Thu Aug 19, 2010 16:30    Post subject: Reply with quote

Обнаружил в ходе экспериментов по этой теме:
переменная %TEMP% содержит короткий путь к папке
TEMP=C:\DOCUME~1\Serge\LOCALS~1\Temp
в DirMenu пишу
Code:
menu19=TEMP
cmd19=cd %TEMP%
при переходе из меню в TEMP заголовок панели отображает короткий путь и параметр %P%N тоже передает короткий.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Thu Aug 19, 2010 17:11    Post subject: Reply with quote

А если открыть командную строку и дать команду set? Просто у меня в ТЕМР длинный путь и вообще все пучком (Win7x64)
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Sun Aug 22, 2010 18:26    Post subject: Reply with quote

Вахмурка
Говорю же: в TEMP - короткий путь. Set'ом и проверил.

Еще забавная подробность: похоже, %P, если имя с пробелами, заканчивается переносом строки, или еще чем подобным. Проверял под Vista следующим образом:
Code:
cmd=cmd /v /c
param= Set /p #= %N _
если имя без пробелов - пробелы и подчерк в конце отображаются, если с пробелами - курсор мигает сразу после последней буквы. Set (без /p) и потом эхо/пауза в обоих случаях работает нормально. Есть у кого информация?
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Sun Aug 22, 2010 19:50    Post subject: Reply with quote

В %P, если имя с пробелами, оно заключено в кавычки, и только. Думаю, это может служить сигналом для команды set, что нужно взять только ту часть остатка строки, которая заключена в кавычки.

А насчет переменной TEMP похоже так и есть - создал нового пользователя (у меня временная папка обычно лежит в корне диска, поэтому путь рукописный), у этого нового пользователя в этой переменной прописано значение C:\DOCUME~1\User\LOCALS~1\Temp.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Sun Aug 22, 2010 20:51    Post subject: Reply with quote

MVV
Уже сам доэкспериментировался - set /p действительно берет приглашение из кавычек, а остальную часть строки игнорирует.

А по поводу Temp - что в переменной - я знаю, меня поведение TC заинтересовало: если cd <короткий_путь> - тотал коротким и пользуется, про длинный не вспоминает.
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 Previous  1, 2, 3, 4  Next
Page 2 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