View previous topic :: View next topic |
Author |
Message |
Batya

Joined: 15 Dec 2004 Posts: 2229 Location: Москва, Россия
|
(Separately) Posted: Wed Aug 18, 2010 12:55 Post subject: |
|
|
Avada wrote: | А, пардон, мы же это уже обсуждали. |
Это уже давно обсуждалось в отдельной теме. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Aug 18, 2010 15:49 Post subject: |
|
|
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 |
|
 |
Lev

Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Wed Aug 18, 2010 15:49 Post subject: |
|
|
Нажатием на кнопку я просто запускаю программу.
Перетаскиванием на кнопку открываю нужный файл в программе.
И то и другое действие я делаю по нескольку раз за день, различая для себя когда какое действие я хочу выполнить. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Aug 18, 2010 17:35 Post subject: |
|
|
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 |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Wed Aug 18, 2010 17:54 Post subject: |
|
|
Кстати, да, вызов команды call избавляет командную строку от открывающей кавычки, следовательно, кнопка должна быть универсальной. Но такое извращение отнюдь не очевидно.
Загрузил виртуальную машину с семеркой - кнопка работает и там, что и следовало ожидать.
Tol!k wrote: | Нет. Как я уже уточнял выше, такая кнопка работает (на XP) только если в полных именах передаваемых файлов нет пробелов, т.ч. не может считаться рабочей. |
действительно на XP не работает... Вот уж ни разу не врублюсь, почему... мелкомягкие тут разорвали мой мозг!
Работает: 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""
Хрен поймешь логику ХРенового командного процессора... Наверное, женская...
Хм, кстати, вот такая кнопка тоже работает везде, хотя и смотрится тупо: 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 |
|
 |
gora

Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Wed Aug 18, 2010 18:22 Post subject: |
|
|
MVV wrote: | Хрен поймешь логику ХРенового командного процессора... Наверное, женская...  |
Из справки по cmd.exe:
Quote: | Если указаны ключи /C или /K, то остальная часть командной строки после
такого ключа обрабатывается как командная строка, а обработка символов
кавычек (") ведется по следующим правилам:
1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:
- ключ /S отсутствует
- есть ровно два символа кавычек
- между ними нет других специальных символов, как то: &()@^|
- между ними имеются один или несколько пробелов
- строка, заключенная в кавычки, является именем исполнимого
файла.
2. В противном случае, проверяется первый символ, и если он является
символом кавычек, то он удаляется, также удаляется последний
символ кавычек в командной строке, а весь текст после этого
последнего символа кавычек сохраняется.
|
_________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Aug 18, 2010 18:23 Post subject: |
|
|
gora wrote: | Quote: | 1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:
...
- есть ровно два символа кавычек
...
|
| Предугадать это не возможно, т.ч. нужно обходить.
MVV wrote: | Загрузил виртуальную машину с семеркой - кнопка работает и там, что и следовало ожидать. | Ну и отличненько. Ставим штамп [рекомендовано] |
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Thu Aug 19, 2010 09:47 Post subject: |
|
|
ХР снимает кавычки, если кавычка - первый символ строки параметров, поэтому, если поставить перед "%Р какой-нибудь ненужный параметр, все будет работать. Проверял на пользовательской команде (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 |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Thu Aug 19, 2010 09:49 Post subject: |
|
|
Чуть не забыл - пустой параметр надо ставить в строке параметров, а не в строке команды. Почему - не знаю. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Thu Aug 19, 2010 16:30 Post subject: |
|
|
Обнаружил в ходе экспериментов по этой теме:
переменная %TEMP% содержит короткий путь к папке
TEMP=C:\DOCUME~1\Serge\LOCALS~1\Temp
в DirMenu пишу Code: | menu19=TEMP
cmd19=cd %TEMP% | при переходе из меню в TEMP заголовок панели отображает короткий путь и параметр %P%N тоже передает короткий. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sun Aug 22, 2010 18:26 Post subject: |
|
|
Вахмурка
Говорю же: в TEMP - короткий путь. Set'ом и проверил.
Еще забавная подробность: похоже, %P, если имя с пробелами, заканчивается переносом строки, или еще чем подобным. Проверял под Vista следующим образом: Code: | cmd=cmd /v /c
param= Set /p #= %N _
| если имя без пробелов - пробелы и подчерк в конце отображаются, если с пробелами - курсор мигает сразу после последней буквы. Set (без /p) и потом эхо/пауза в обоих случаях работает нормально. Есть у кого информация? |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Sun Aug 22, 2010 19:50 Post subject: |
|
|
В %P, если имя с пробелами, оно заключено в кавычки, и только. Думаю, это может служить сигналом для команды set, что нужно взять только ту часть остатка строки, которая заключена в кавычки.
А насчет переменной TEMP похоже так и есть - создал нового пользователя (у меня временная папка обычно лежит в корне диска, поэтому путь рукописный), у этого нового пользователя в этой переменной прописано значение C:\DOCUME~1\User\LOCALS~1\Temp. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sun Aug 22, 2010 20:51 Post subject: |
|
|
MVV
Уже сам доэкспериментировался - set /p действительно берет приглашение из кавычек, а остальную часть строки игнорирует.
А по поводу Temp - что в переменной - я знаю, меня поведение TC заинтересовало: если cd <короткий_путь> - тотал коротким и пользуется, про длинный не вспоминает. |
|
Back to top |
|
 |
|
|
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
|