Ru-Board.club
← Вернуться в раздел «Программы»

» Total Commander (Часть 8)

Автор: mrdime
Дата сообщения: 25.12.2013 17:55
Для доступа к файлам/ папкам с длинными и мудреными путями/ именами обычно записываю этот путь себе где-то в txt-файл (на все необходимые мне папки к сожалению закладок не наделяешься) и потом копирую и вставляю его в коммандную строку в Тотале после команды cd.
Но недавно столкнулся с тем, что есть папки/ файлы с именами содержащими "%", например портабл-сборка скайпа хранит свои данные здесь: c:\Users\Dmytro\AppData\Roaming\Thinstall\Skype4.2.0.187\%AppData%\Skype\
Если этот путь вставить в командную строку после cd ничего не происходит, т.е. Тотал не понимает этот путь. Есть ли способы сделать так, чтобы сабж нормально обрабатывал пути такого типа и корректно совершал переход в нужную папку?
Автор: rashidt
Дата сообщения: 25.12.2013 17:57
Еще одна неясность: когда переименоваешь файл на месте (двойным кликом), то справа от области редактирования появляется галка. Зачем она, я так и не понял.
Автор: Rodny
Дата сообщения: 25.12.2013 18:01
rashidt (18:57 25-12-2013)
Цитата:
справа от области редактирования появляется галка. Зачем она, я так и не понял.

Для подтверждения изменений мышкой, а не по Enter.
Автор: B3T6
Дата сообщения: 25.12.2013 18:04
mrdime
попробуйте удвоить %%
Автор: mrdime
Дата сообщения: 25.12.2013 18:17
B3T6

Цитата:
попробуйте удвоить %%

Не помогло. Все равно не работает.
Автор: Avada
Дата сообщения: 25.12.2013 18:19
mrdime
Так происходит с подобными портабл-сборками далеко не только в Тотале. Делается попытка раскрыть %AppData% (или иную подобную папку) автоматически как имя физического каталога, соответствующего по этому пути указанной переменной. А такого каталога там нет.
Если такой путь назначить в TC кнопке (перетащить папку на панель инструментов), легко увидеть, что переход выполнится ровно до папки с именем переменной. Из командной строки вообще ничего выполняться не будет. Программа не в состоянии понять, где ей подсовывают переменную, а где точно так же называемую папку, поэтому в подобных случаях приоритет за переменной.
Автор: Rodny
Дата сообщения: 25.12.2013 18:24
Оно и в Проводнике не работает. Там выдаётся ошибка, из текста которой ясно видно, что переменная %AppData% разворачивается в реальный путь:
"c:\Users\Dmytro\AppData\Roaming\Thinstall\Skype4.2.0.187\c:\Users\Dmytro\AppData\Roaming\Skype\"
Автор: mrdime
Дата сообщения: 25.12.2013 18:28
Avada

Цитата:
Программа не в состоянии понять, где ей подсовывают переменную, а где точно так же называемую папку, поэтому в подобных случаях приоритет за переменной.

Ясно. Есть ли какой-то другой способ быстрого доступа к подобным каталогам? А то устанешь мышкой кликать пока до config.xml в скайпе доберешься например.
Автор: Rodny
Дата сообщения: 25.12.2013 18:33
mrdime (19:28 25-12-2013)
Цитата:
Есть ли какой-то другой способ быстрого доступа к подобным каталогам

Отрезать часть с %AppData% от пути, всё быстрее.
Автор: mrdime
Дата сообщения: 25.12.2013 20:49
Rodny

Цитата:
Отрезать часть с %AppData% от пути, всё быстрее.

Так и делаю.
2All
Тут идея возникла, навеянная советом B3T6.
Насколько я понял, кое-кто из тех, кто тусуется в этой ветке общается с Гислером (или зарегистрирован и часто общается на его официальном форуме, который он наверняка читает). Гислер как раз работает над новой версией сабжа.

Может вы передадите ему предложение: включить возможность, чтобы если в пути к папке или файлу стоит двойной знак процента - %%, то чтобы ТС воспринимал информацию между этими знаками не как переменную, а как обычный кусок пути к папке/ файлу.
Думаю, это было бы неплохим решением вопроса.
Автор: panda3
Дата сообщения: 26.12.2013 11:08
Вообще-то нужно ставить не двойной процент, а еscape перед процентом:

Код: cd ^%AppData^%
Автор: caxap
Дата сообщения: 26.12.2013 12:30
ТУТА аффтар ВОТЭТОГО маааааленькими белыми буквами написал:
( There's a bonus easter egg in the software, hope you guys are goin' to find it. =P )

Нарыл ктонить?

Ну и по делу:
Как в этой утиле создать папку вида:
%Имя файла(файлов)%\%Y-%N-%D

Какой переменной в шаблонах имя файла прописать? Чёт не въеду никак...
Автор: mrdime
Дата сообщения: 26.12.2013 13:33
panda3
Попробовал я эту команду из коммандной строки винды:

Цитата:
cd c:\Users\Dmytro\AppData\Roaming\Thinstall\Skype4.2.0.187\^%AppData^%\Skype\

- безрезультатно. Тот же эффект, что и в Тотале.
ОС Win 7 x64 Ultimate
Автор: Avada
Дата сообщения: 26.12.2013 13:43
caxap
Во-первых, папки такого вида (со слэшем в имени) быть не может. Во-вторых, непонятно, какое конкретно имя файла там хочется прописать и зачем для него понадобилась переменная.
Автор: GGS
Дата сообщения: 26.12.2013 14:14
mrdime
Вот такая кнопка в Тотале работает правильно

Код: TOTALCMD#BAR#DATA
cd
c:\Users\Dmytro\AppData\Roaming\Thinstall\Skype4.2.0.187\%%AppData%%\Skype
%COMMANDER_PATH%\TotalCmd.exe,1



-1
Автор: Avada
Дата сообщения: 26.12.2013 16:35
GGS
Да, подтверждаю (на своих путях), что с переносом пути в поле "Параметры" и удвоением там знаков процента кнопка работает правильно.
Автор: naben
Дата сообщения: 26.12.2013 18:17
Знатоки, может кто подскажет есть ли такая функция или как запилить следующую возможность:
1. Есть файл, например, "H:\boot\syslinux\syslinux.cfg".
2. Мне его нужно скопировать в "F:\boot\syslinux\syslinux.cfg".
3. Как видно, место копирование отличается только буквой диска.
4. Как сделать так, что бы при копировании я указывал только букву диска, а сам дальнейший путь подставлялся автоматом?
Автор: mig73
Дата сообщения: 26.12.2013 19:48
naben
Ну дак TC же двухпанельный. Ну пущай справа H, а слева F. Ну а напостоянку кнопочку создайте, для копирования конкретного файла (или файла под курсором) по конкретному пути с перезаписью. Ну и вкладки ещё есть кроме того.
Автор: mrdime
Дата сообщения: 26.12.2013 19:50
GGS

Цитата:
Вот такая кнопка в Тотале работает правильно

Спасибо за совет, но для меня это не решение. Т.к. подобных путей много, и пользуюсь ими не очень часто, чтобы для каждого из них кнопки заводить.

Автор: Rodny
Дата сообщения: 26.12.2013 20:38
naben
В принципе, скриптом не проблема. Но есть ряд вопросов.
1. Копировать нужно через диалог самого TC или без разницы?
2. Что делать, если такого каталога не окажется на другом диске? Разбирать весь путь и создавать там?
3. Что делать, если файл с таким именем уже существует?

В простом варианте, если копировать скриптом, полагать, что путь всегда существует, файл перезаписывать:
Copy2SamePath.vbs : [more]
Код: '==============================================================================
' Copy2SamePath.vbs
' Копирование файла в папку, отличающуюся буквой диска
' Параметры вызова для кнопки: {исходный файл} {новый диск}
' (второй параметр можно опустить). Пример параметров:
' %P%N F
'
' by Rodny
' v. 0.2
' http://forum.ru-board.com/topic.cgi?forum=5&topic=45288&start=1960#12
'==============================================================================

Option Explicit
Dim
WSH, FSO, file, Disk, Path, NewPath

Set WSH = CreateObject("WScript.Shell")
Set
FSO = CreateObject("Scripting.FileSystemObject")

' Берём исходный путь из параметров кнопки
Path = WSH.ExpandEnvironmentStrings(WScript.Arguments(0))

' Задаём диск из параметров кнопки или непосредственно
Disk = ""
Do
If
WScript.Arguments.Count = 1 Then
Disk = InputBox("Задайте диск назначения" & VBNewLine & "(БЕЗ кавычек!)", "Требуется указать диск")
Else
Disk = WScript.Arguments(1)
End If

If
IsEmpty(
Disk) Then
WScript.Quit
End If
Loop While
Disk = ""

' Новый путь
NewPath = Disk & Right(Path, Len(Path) - 1)
Set
file = FSO.GetFile(Path)
file.Copy(NewPath)

Set
WSH = Nothing
Set
FSO = Nothing
Wscript.Quit()
Автор: Abel11
Дата сообщения: 26.12.2013 21:12
naben
Утилита TCIMG,кнопка - параметры pathu=%P%N||gocd<> , будет открывать выделеные каталоги файлы в другой панели, другого диска (если схожие, по путь/имя, имеются), без разницы на каком вы диске, ну а если у вас не два диска, а более, с идентичными данными, тогда в кнопке, в параметрах надо указать нужный диск (букву), для его открытия в другой панели: pathu=%P%N||gocd<?> , остается лишь перетащить нужные файлы, я пользуюсь первым вариантом, у меня два диска.Да, забыл, если открыт уже каталог, то не надо выделять файл, которого не существует на другом диске в одноименном каталоге, а после нажимать кнопку, ничего не откроется соответственно, так что не выделять файл, ну а если уверены, что на другом диске есть такой файл, то выделение не воспрепятствует открытию каталога на другом диске.
Автор: Andrey_A_A
Дата сообщения: 27.12.2013 01:58

Цитата:
есть ли такая функция или как запилить следующую возможность:


naben, не до конца понятно:
1. Откуда берётся файл
- из буфера обмена
- из панели TC
2. С заменой или без замены (если по целевому пути такой файл есть)
...

С помощью TCIMG решается так:


Код: TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
copyy=%P%N||%P%N!!1!!(\w):(\\.+)\\.+\\?!!E:$2
%COMMANDER_PATH%\TCIMG.exe
Копировать объект под курсором на диск E, сохраняя структуру пути (с заменой)

0
-1
Автор: c930
Дата сообщения: 27.12.2013 02:43
Andrey_A_A
Есть же чек-бокс Разрешить смайлики. Попробуй галку снять.
Автор: Abel11
Дата сообщения: 27.12.2013 03:07
Andrey_A_A
Ни один из предложенных вариантов не сработал ,почему-то, ради интересУ потестил.

Пардоньте, это я накосячил у себя, все ОК, все работает.Молодец Аверин, рульную утилиту создал, как же она облегчает работу.

Код: TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\TCIMG.exe"
copyy=%P%N||%P%N!!1!!(\w):(\\.+)\\.+\\?!!C:$2
Копировать объект под курсором на диск C, сохраняя структуру пути (с заменой)

-1
Автор: naben
Дата сообщения: 27.12.2013 19:54
Rodny
Вы угадали мои мысли, копировать нужно из панели Тотала. Если такого каталога не окажется на другом диске, то разбирать весь путь и создавать там. Если файл с таким именем уже существует, то перезаписать. Ваш скрипт интересен, но если выделено несколько файлов , то наверное он не сработает.
Abel11
С помощью программы получилось, но можно всё таки выводить запрос о том, на какой диск писать? И хотя бы какой-то диалог по окончании операции, а то даже непонятно, скопировалось или нет.
Автор: Abel11
Дата сообщения: 28.12.2013 00:41
naben. я только начал разбираться с TCIMG, придет Andrey_A_A, автор сия творения, подскажет насчет диалога.
Для диалогового окна выбора диска, заменить [more=TCIMG.lng]Ссылка[/more]
параметры в кнопке будут выглядеть так:

copyy=%P%N||%P%N!!1!!(\w):(\\.+)\\.+\\?!![input=Box55]:$2!! beepss - это копирование (с заменой) обьекта под курсором, звуковой сигнал по завершению.
copys=%L||::!!1!!(\w):(\\.+)\\.+\\?!![input=Box55]:$2 beepss копирование для выделенных обьектов, звуковой сигнал по завершению.
Автор: Rodny
Дата сообщения: 28.12.2013 01:18
naben
Про копирование я несколько другое имел в виду. ОК, новая версия:
Можно выделять несколько файлов (даже папок, скрипт их пропускает).
Создание папок.
Поддержка юникодных имён (поменялся параметр кнопки!).

Copy2SamePath.vbs : [more]
Код: '==============================================================================
' Copy2SamePath.vbs
' Копирование выделенных файлов в папку, отличающуюся буквой диска
' Параметры вызова для кнопки: %WL {новый диск}
' (второй параметр можно опустить). Пример параметров:
' %WL F
'
' by Rodny
' v. 0.4
' http://forum.ru-board.com/topic.cgi?forum=5&topic=45288&start=1960#12
'==============================================================================

Option Explicit
Dim
WSH, FSO, ListFile, FileName, FilePath, Disk, NewFile, NewPath, Files, File, c

Set WSH = CreateObject("WScript.Shell")
Set
FSO = CreateObject("Scripting.FileSystemObject")

ListFile = WScript.Arguments(0)

Disk = ""
Do
If
WScript.Arguments.Count = 1 Then
Disk = InputBox("Задайте диск назначения" & VBNewLine & "(без кавычек)", "Требуется указать диск")
Else
Disk = WScript.Arguments(1)
End If

If
IsEmpty(
Disk) Then
WScript.Quit
End If
Loop While
Disk = ""

c = 0
Files = Split(FSO.GetFile(ListFile).OpenAsTextStream(1,-1).ReadAll, vbNewLine)
For Each
File in Files
If (Trim(File) > vbNullString) And (Right(File, 1) <> "\") Then
Set
FileName = FSO.GetFile(File)
Set
FilePath = FSO.GetFile(File).ParentFolder
' Новый путь
NewFile = Disk & Right(File, Len(File) - 1) '& "\" & FileName
NewPath = Disk & Right(FilePath, Len(FilePath) - 1)

If Not
FSO.FolderExists(NewPath) Then
FoldersCreate(NewPath)
End If
FileName.Copy NewFile
c = c + 1
End If
Next

' Если сообщение в конце не требуется - закомментировать следующую строчку (поставить первым символом ')
MsgBox "Скопировано файлов: " & c, vbOKOnly, "Готово" ' ОТЛАДКА

Function FoldersCreate(Folder)
Dim
PF
Do
PF = FSO.GetParentFolderName(Folder)
If
FSO.FolderExists(PF) Then
If Not
FSO.FolderExists(Folder) Then
FSO.CreateFolder(Folder)
End If
Else
FoldersCreate PF & "\"
End If
Loop While Not
FSO.FolderExists(Folder)
End Function

Set
WSH = Nothing
Set
FSO = Nothing
Set
FileName = Nothing
Set
FilePath = Nothing
Wscript.Quit()
Автор: Mordavorot
Дата сообщения: 28.12.2013 16:46

Цитата:
Например, можно воспользоваться этим плагином
http://wincmd.ru/plugring/wdx_ImgSize.html
 
Создать пользовательскую колонку "Orientation" и по ней отсортировать
или через "поиск с плагинами".

Поставил его.
Как найти этот плагин?
Через поиск тоже не могу рассортировать
Автор: Andrey_A_A
Дата сообщения: 28.12.2013 16:56

Цитата:
на какой диск писать?

naben замените TCIMG.lng

и там где E:$2 или C:$2 заменить на [input=Box55]:$2

Abel11 всё правильно написал (уже лучше меня разбирается)

Всех с Наступающем)))

Автор: naben
Дата сообщения: 28.12.2013 21:27
Rodny
Спасибо, классный скрипт получился, то что нужно

Добавлено:
Andrey_A_A
404

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176

Предыдущая тема: Распечатка брошюры в Word 2003


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.