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 

Кнопка для создания файла
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
BeTeP



Joined: 31 Mar 2005
Posts: 101
Location: Санкт-Петербург

Post (Separately) Posted: Mon Mar 27, 2006 13:19    Post subject: Кнопка для создания файла Reply with quote

Прочитал в RU.TCKB, как быстро создать файл нажатием кнопки.

Пример:
Quote:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Programs\AkelPad\akelpad.exe
%pNewFile.txt
%COMMANDER_PATH%\Programs\AkelPad\akelpad.exe
Создание файла в активной панели
%COMMANDER_PATH%\Programs\AkelPad\

-1

В данном случае я использую AkelPad, потому что он не задает лишних вопросов (создать ли файл с именем NewFile.txt). Но, если надо создать ещё один файл, а предыдущий файл не сохранен и не переименован, то эта кнопочка не помогает. Открывается дубликат уже созданного файла, что не очень удобно.

Можно ли сделать, чтобы при нажатии на кнопку создавался файл и если, файл с таким именем уже есть, то создавался файл с этим же именем и с номером в конце. Например: если есть файл NewFile.txt, то следующие будут: NewFile01.txt, NewFile02.txt NewFile03.txt и т.д.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Mon Mar 27, 2006 14:22    Post subject: Reply with quote

BeTeP
Создай файл *.vbs (например, %COMMANDER_PATH%\Utils\WHS\OpenWithNextNumber.vbs) с содержимым:
Code:
Dim Akelpad, FilePath, WS
Akelpad  = WScript.Arguments(0)
FilePath = WScript.Arguments(1)
Set WS = WScript.CreateObject("WScript.Shell")
WS.Run """" & Akelpad & """ """ & NextName(FilePath) & """"
Set WS = Nothing
WScript.Quit()

Function NextName(pFilePath)
  Dim FSO, Path, Name, Ext, i, Ending
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Path = FSO.GetParentFolderName(pFilePath) & "\"
  Name = FSO.GetBaseName(pFilePath)
  Ext  = FSO.GetExtensionName(pFilePath)
  Do While FSO.FileExists(Path & Name & Ending & "." & Ext)
    i = i + 1
    Ending = Right("0" & i, 2)
  Loop
  Set FSO = Nothing
  NextName = Path & Name & Ending & "." & Ext
End Function

Соответственно кнопка:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\OpenWithNextNumber.vbs %COMMANDER_PATH%\Programs\AkelPad\akelpad.exe
%pNewFile.txt
%COMMANDER_PATH%\Programs\AkelPad\akelpad.exe
Создание файла в активной панели


-1
Back to top
View user's profile Send private message
BeTeP



Joined: 31 Mar 2005
Posts: 101
Location: Санкт-Петербург

Post (Separately) Posted: Tue Mar 28, 2006 12:42    Post subject: Reply with quote

Batya, спасибо.
Сейчас буду пробовать.
Back to top
View user's profile Send private message
BeTeP



Joined: 31 Mar 2005
Posts: 101
Location: Санкт-Петербург

Post (Separately) Posted: Tue Mar 28, 2006 13:46    Post subject: Reply with quote

Попробовал. К сожалению выдает ошибку:

Back to top
View user's profile Send private message
BeTeP



Joined: 31 Mar 2005
Posts: 101
Location: Санкт-Петербург

Post (Separately) Posted: Tue Mar 28, 2006 13:52    Post subject: Reply with quote

Batya, извини. Всё работает.
Это я сам ошибся при создании кнопки.
Ещё раз спасибо.
Back to top
View user's profile Send private message
KarS



Joined: 21 Apr 2006
Posts: 102
Location: г. Абакан

Post (Separately) Posted: Sun May 26, 2013 19:00    Post subject: Reply with quote

Batya
Спасибо за скрипт. Мне он тоже пригодился.
Но возникло одно неудобство в моей работе.
Скрипт, как и положено, создаёт файл "NewFile.txt", а потом следующие.
Но для меня это не удобно для последующих действий. Я эти файлы использую как промежуточные для вставки в другие документы.
Поэтому более удобной нумерацией в моей ситуации был бы порядок, когда счёт начинался бы с "NewFile01.txt", затем "NewFile02.txt" и т.д.

Как можно доработать скрипт, чтобы он по-умолчанию создавал файл "NewFile01.txt", а потом другие?

И ещё один вопрос. Можно ли отключить запросы на подтверждение имени создаваемого файла? Имхо это лишнее. И так видно, файл с каким именем создаётся. Да и изменить имя в процессе создания файла нельзя.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 26, 2013 21:18    Post subject: Reply with quote

KarS
Quote:
WS.Run """" & Akelpad & """ /C+ """ & NextName(FilePath) & """"
и
Quote:
Ext = FSO.GetExtensionName(pFilePath) : Ending = "01"

А вообще AkelPad тут вовсе лишний. Текстовые файлы без него элементарно создаются...
Также на здешние решения обращаю внимание.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KarS



Joined: 21 Apr 2006
Posts: 102
Location: г. Абакан

Post (Separately) Posted: Mon May 27, 2013 19:16    Post subject: Reply with quote

Flasher,
Чудно, Спасибо!
Работает для меня идеально, так как нужно. Мне пока большего и не надо.
Спасибо за грамотную и оперативную помощь!
Но далее тоже заинтересовало:
Quote:
А вообще AkelPad тут вовсе лишний.

Соблазн Smile
Т.е. его можно просто удалить из тела скрипта? Или нужно заменить на notepad? И из настройки кнопки убрать "%COMMANDER_PATH%\Programs\AkelPad\akelpad.exe "?
Как в таком случае будет выглядеть скрипт и параметры кнопки?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 27, 2013 19:28    Post subject: Reply with quote

KarS
Пожалуйста.
Всё утыкается в необходимость открытия. Если открытие нужно в AkelPad, то лучше оставить как есть. Если не нужно или нужно открывать в дефолтном редакторе для txt, то перепишу код.

Лично мне по душе мой сценарий с самостоятельным указанием имени файла.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KarS



Joined: 21 Apr 2006
Posts: 102
Location: г. Абакан

Post (Separately) Posted: Tue May 28, 2013 17:32    Post subject: Reply with quote

Flasher, спасибо, что поддерживаете обсуждение.
В принципе AkelPad - меня устраивает. Сохраняя из него можно изменить кодировку при необходимости.
Попробовал Ваш скрипт.
Для моего типа задач с ним работать мне показалось пока не очень удобно: надо постоянно вручную вводить имя и дополнять цифры 01, 02, 03...

Т.е. это разные типы задач:
1) создать файл с именем, совпадающим с именем файла, находящегося под курсором.
2) создавать серию файлов с одинаковыми названиями, но отличной нумерацией.

Хотел было предложить объединить функции Вашего скрипта и скрипта от Бати, но передумал. Эта проблема должна решаться пользователем в голове, а не скриптом.

А вот для доработки Вашего скрипта, если не возражаете, есть предложение.
Предусмотреть настройку дефолтного имени создаваемого файла:
а) если курсор находиться не на файле, а вверху на месте перехода в директорию (сейчас никакого имени не предлагается), то желательно предлагать это дефолтное имя;
б) если курсор перед запуском скрипта находился на файле, то по Вашему сценарию предлагается имя этого файла. Можно ввести правило, если пользователь очистил окно ввода одним нажатием (Backspace или Del), то скрипт создаёт файл с настроенным дефолтным именем.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue May 28, 2013 19:26    Post subject: Reply with quote

KarS wrote:
Сохраняя из него можно изменить кодировку при необходимости.
Кодировку и в скрипте можно сменить.

KarS wrote:
Т.е. это разные типы задач
Я не пишу, что они одинаковые. Я пишу о своих предпочтениях. Мне нужно всегда вводить определённое имя для идентификации. Нумерацию я использую только при создании группы дублей.
KarS wrote:
создавать серию файлов с одинаковыми названиями, но отличной нумерацией
Не понял. Тут нет никакой серии. Тут только один файл создаётся.

По моему скрипту пишем в соотв. топик.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KarS



Joined: 21 Apr 2006
Posts: 102
Location: г. Абакан

Post (Separately) Posted: Wed May 29, 2013 17:19    Post subject: Reply with quote

Когда я писал о разных типах задач, то имел в виду свои ситуации, с которыми я часто встречаюсь.
Конечно, Ваш скрипт решает только первый тип задач.
Чтобы не усложнять разработку скрипта, я и остановился на том, что буду в своей работе использовать два скрипта: один Ваш, а второй от Бати.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed May 29, 2013 20:28    Post subject: Reply with quote

KarS wrote:
Чтобы не усложнять разработку скрипта
Какого скрипта? Пока ничего не предлагалось в плане разработки. Объединение, работа с выделенным списком, указания числа пустышек. Вот это была бы конкретика.
Что касаемо дефолтного имени при нахождении на элементе [..], то можно отдельным параметром сделать, поскольку неясно, что кому может понадобиться.
А вот при очистке строки создавать дефолтное имя не буду, поскольку это равносильно закрытию окна по Esc, Отмене, [x]. Разделить эти вещи нельзя.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KarS



Joined: 21 Apr 2006
Posts: 102
Location: г. Абакан

Post (Separately) Posted: Fri May 31, 2013 18:39    Post subject: Reply with quote

Всё воспринимаю как есть.
Если кроме меня никому не надо, то и не предлагаю пока ничего.
Неудобно Вас отвлекать.
Итак спасибо, за то, что уже поправили.
Back to top
View user's profile Send private message
Dioxin



Joined: 21 Apr 2013
Posts: 2

Post (Separately) Posted: Tue Jul 28, 2015 13:32    Post subject: Reply with quote

Добрый день. Столкнулся с такой проблемкой: создал кнопку на панели TC, скрипт использовал такой же, как приведен выше, только в пятой строчке дописал /C+ чтобы не было диалога подтверждения создания файла. Так вот, всё нормально работает, пока в имени папки, в которой нужно создать файл, не появляется пробел. Например, текстовый файл нужно создать в папке D:\te st, а файл создается в корне диска D да еще и с именем te без расширения. И при всём при этом в папке С:\Program Files всё корректно создается. В папке f:\Install\1С 8.2 создается, в папке e:\AppData\Downloads\FolderSizes 7.5.30 Enterprise Portable не создается. Пока писал эти строки создал на диске D папки Install\1С 8.2. Так вот в папке d:\Install\1С 8.2 скрипт не работает. На всякий случай проверил права доступа, всё в порядке, всем, пользователям, админам, прошедшим проверку и своей учетке полный доступ, моя учетка является владельцем. В папке f:\Install\Точка доступа из ПК\ создается, скопировал ее в TC со всеми правами на диск D - там уже не создается. Грешил на корявую сборку AkelPad'а, заменил на другую - результат такой же. Убрал скрипт из кнопки TC, файл создается всегда и везде (ну только автоматической нумерации нет). Win 7 SP1 x64, TC 8.51a (x86, да и в x64 тоже самое наблюдается), AkelPad 7.9.4 x86, учетка с админскими правами, разделы NTFS. Вот такая у меня петрушка.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
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