Как заменить в файле TAB пути ...

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Я не понимаю что за словосочетание <строка поиска> Что там нужно написать?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alexfmos писал(а):заменить в нём PROJECTNAME на PROJECTNAME_2.
[+] В скрипте ещё бэкслеши добавил для точности.
Если путь хочется писать с %COMMANDER_PATH%, то оба параметра можно ввести в поле "Команда:" через пробел после пути к скрипту.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

В параметрах кнопки Написать путь к файлу в кавычках. Затем после пробела название projectname? Так?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Только в соотв. регистре. А что касается кавычек, то опять же возвращаемся к п. 5.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Я так и делаю, вываливается ошибка.

Код: Выделить всё

Сценарий:	F:\My doc\Projects\Cafe_Randr\1.vbs
Строка:	5
Символ:	40
Ошибка:	Ввод данных за пределами файла
Код:	800A003E
Источник: 	Ошибка выполнения Microsoft VBScript
Параметр

Код: Выделить всё

"f:\My doc\Projects\Cafe_Randr\Cafe2.tab" Cafe_Randr
И я так и не понял что делает Ваш скрипт? Заменяет в текстовом файле Projectname на Projectname_2?
Тогда я могу сказать что это Вы не внимательно читали. Задача не заменить название на такое же с цифрой два, т.к. Projectname это просто пример, названия разные. Задача, чтоб при нажатии на файл TAB открывались нужные папки, но только в зависмости от проекта.
Например есть проект Кафе. В нем папки maps, post, downloads и т.д.
Теперь есть новый проект , допустим Ресторан. И в нем тоже папки maps, post, downloads и т.д.
То есть в пути меняется только название проекта, а названия tab те же.
Итак, главная задача положить в папку проекта файл tab без названия проекта, а с переменной нечто вроде
F:\My doc\Projects\%FILEFOLDER%\Maps\
Тогда в любом проекте, зайдя в корень и щелкнув по tab файлу, откроются все нужные вне вкладки.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alexfmos писал(а):И я так и не понял что делает Ваш скрипт?
Я же процитировал, что он делает.
alexfmos писал(а):Тогда я могу сказать что это Вы не внимательно читали.
См. тут:
alexfmos писал(а):вместо PROJECTNAME_1-... написать какую то переменную, которая заменяла бы его на текущий каталог
Я подумал, что PROJECTNAME и есть переменная. Т.е. вместо неё и пишем имя активного каталога (одного из подкаталогов Projects).
alexfmos писал(а):Задача не заменить название на такое же с цифрой два
Я привёл цитату с выделением, отвечая на вопрос. К цифре 2 это никакого отношения не имеет.
alexfmos писал(а):главная задача положить в папку проекта файл tab без названия проекта
А файл tab откуда берётся?
Последний раз редактировалось Flasher Ср июн 03, 2015 21:16, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Файл tab я создал единожды. Дальше я например создаю новый проект. Автоматом в новом проекте "Ресторан" создается 10 подкаталогов. Туда же, рядом с этими подкаталогами, я бы положил копию этого tab файла. И так как путь в нём не содержит прямых путей, то он откроет эти подкаталоги именно из проекта "ресторан", а не из "кафе".
Нужен путь не постоянный, а относительный.
Например, я попробовал вместо пути написать

Код: Выделить всё

.\maps
.\downloads
и т.д.
Тогда открываются эти вкладки, и при переходе на Maps там действительно Maps, но при переходе на downloads, там опять Maps :(
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Я не понимаю. Есть проект Кафе и соотв. папка. Мы в неё заходим, запускаем скрипт и смотрим на файл tab, в котором вместо PROJECTNAME в пути везде стоит Кафе. Что не так-то?
Да путь будет прямой, а не относительный. И что с того, если файл tab становится рабочим?
Что касается относительных путей, то они формируются без точки и бэкслеша спереди относительно каталога, в котором лежит tab-файл. Т.е. не .\maps, а maps\. Но этот вариант не пригоден для других типов запуска (например, с кнопки по OPENTABS), где нужно не добавлять к имеющимся, а заменять текущие вкладки.
Последний раз редактировалось Flasher Ср июн 03, 2015 21:51, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Я уже дважды говорил о вываливающейся ошибке.
Сейчас вроде дело продвинулось. Видимо что-то я наконец делаю правильно. Вываливается

Код: Выделить всё

Сценарий:	F:\My doc\Projects\Cafe_Randr\1.vbs
Строка:	7
Символ:	12
Ошибка:	Не удается найти указанный файл. 
Код:	80070002
Источник: 	(null)
Но после этого вроде создается нужный файл. [/quote]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alexfmos
А ничего, что ошибка во всех 3-х случаях разная? :D
В последнем случае "Не удается найти указанный файл." прямо указывает на то, что tab-файл по указанному пути не существует. Я так и не получил полноценный ответ на п. 3 при ошибках. Можно код кнопки увидеть?

И раз такое дело, то в идеале как раз нужно было описать всю задачу автоматизации совместно с созданием структуры и указать на каталоги-получатели tab-файлов. Такой скрипт бы решал задачу полноценно? Или ещё есть какие-то константы/переменные в проектах?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

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

Код: Выделить всё

"F:\My doc\1.vbs" 
Параметр

Код: Выделить всё

"f:\My doc\tabs.tab" filefolder
Почему он не видит файл с tab, но при этом все таки берет с него инфу и создает новый файл tab как надо? То есть сейчас по сути все работает, только вываливается ошибка.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А если в 7 строке Open заменить на Create и , 2 убрать?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Код: Выделить всё

Dim WSH : Set WSH = CreateObject("WScript.Shell") 
CD = WSH.CurrentDirectory : Set A = WScript.Arguments 
With CreateObject("Scripting.FileSystemObject") 
  If CD = .GetParentFolderName(A(0)) Then WScript.Quit 
  NF = CD & "\" & .GetFileName(A(0)) : .CreateTextFile(NF, True)._ 
  Write Replace(.OpenTextFile(A(0)).ReadAll, "\" & A(1) & "\", "\" & .GetFileName(CD) & "\") 
End With : WSH.Run """%COMMANDER_EXE%"" /O /S /L=""" & NF & """"
Снова

Код: Выделить всё

Сценарий:	F:\My doc\1.vbs
Строка:	7
Символ:	12
Ошибка:	Не удается найти указанный файл. 
Код:	80070002
Источник: 	(null)
Но файл создается правильно.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вообще не понимаю, к чему там 12 символ. Неужели на x64 такие проблемы могут быть.. А tab-файл ничем не открыт?
Что если 7-8 строки в таком виде прописать?

Код: Выделить всё

  NF = CD & "\" & .GetFileName(A(0))
  .CreateTextFile(NF, True).Write Replace(.OpenTextFile(A(0)).ReadAll, "\" & A(1) & "\", "\" & .GetFileName(CD) & "\")
Если ошибка выскочит, то прошу указать только строку и символ.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
alexfmos
Сообщения: 78
Зарегистрирован: Ср июн 29, 2005 20:23

Сообщение alexfmos »

Файл ничем не открыт

Строка: 7
Символ: 12

Извините, я не сказал, я последнее время копировал код без первых 2 закомментированых строк. Теперь 7 это последняя наверное?
Ответить