Кнопка для создания файла
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Кнопка для создания файла Author: BeTePLocation: Санкт-Петербург PostPosted: Mon Mar 27, 2006 13:19
    —
Прочитал в 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 и т.д.

#2:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Mar 27, 2006 14:22
    —
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

#3:  Author: BeTePLocation: Санкт-Петербург PostPosted: Tue Mar 28, 2006 12:42
    —
Batya, спасибо.
Сейчас буду пробовать.

#4:  Author: BeTePLocation: Санкт-Петербург PostPosted: Tue Mar 28, 2006 13:46
    —
Попробовал. К сожалению выдает ошибку:


#5:  Author: BeTePLocation: Санкт-Петербург PostPosted: Tue Mar 28, 2006 13:52
    —
Batya, извини. Всё работает.
Это я сам ошибся при создании кнопки.
Ещё раз спасибо.

#6:  Author: KarSLocation: г. Абакан PostPosted: Sun May 26, 2013 19:00
    —
Batya
Спасибо за скрипт. Мне он тоже пригодился.
Но возникло одно неудобство в моей работе.
Скрипт, как и положено, создаёт файл "NewFile.txt", а потом следующие.
Но для меня это не удобно для последующих действий. Я эти файлы использую как промежуточные для вставки в другие документы.
Поэтому более удобной нумерацией в моей ситуации был бы порядок, когда счёт начинался бы с "NewFile01.txt", затем "NewFile02.txt" и т.д.

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

И ещё один вопрос. Можно ли отключить запросы на подтверждение имени создаваемого файла? Имхо это лишнее. И так видно, файл с каким именем создаётся. Да и изменить имя в процессе создания файла нельзя.

#7:  Author: FlasherLocation: Москва PostPosted: Sun May 26, 2013 21:18
    —
KarS
Quote:
WS.Run """" & Akelpad & """ /C+ """ & NextName(FilePath) & """"
и
Quote:
Ext = FSO.GetExtensionName(pFilePath) : Ending = "01"

А вообще AkelPad тут вовсе лишний. Текстовые файлы без него элементарно создаются...
Также на здешние решения обращаю внимание.

#8:  Author: KarSLocation: г. Абакан PostPosted: Mon May 27, 2013 19:16
    —
Flasher,
Чудно, Спасибо!
Работает для меня идеально, так как нужно. Мне пока большего и не надо.
Спасибо за грамотную и оперативную помощь!
Но далее тоже заинтересовало:
Quote:
А вообще AkelPad тут вовсе лишний.

Соблазн Smile
Т.е. его можно просто удалить из тела скрипта? Или нужно заменить на notepad? И из настройки кнопки убрать "%COMMANDER_PATH%\Programs\AkelPad\akelpad.exe "?
Как в таком случае будет выглядеть скрипт и параметры кнопки?

#9:  Author: FlasherLocation: Москва PostPosted: Mon May 27, 2013 19:28
    —
KarS
Пожалуйста.
Всё утыкается в необходимость открытия. Если открытие нужно в AkelPad, то лучше оставить как есть. Если не нужно или нужно открывать в дефолтном редакторе для txt, то перепишу код.

Лично мне по душе мой сценарий с самостоятельным указанием имени файла.

#10:  Author: KarSLocation: г. Абакан PostPosted: Tue May 28, 2013 17:32
    —
Flasher, спасибо, что поддерживаете обсуждение.
В принципе AkelPad - меня устраивает. Сохраняя из него можно изменить кодировку при необходимости.
Попробовал Ваш скрипт.
Для моего типа задач с ним работать мне показалось пока не очень удобно: надо постоянно вручную вводить имя и дополнять цифры 01, 02, 03...

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

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

А вот для доработки Вашего скрипта, если не возражаете, есть предложение.
Предусмотреть настройку дефолтного имени создаваемого файла:
а) если курсор находиться не на файле, а вверху на месте перехода в директорию (сейчас никакого имени не предлагается), то желательно предлагать это дефолтное имя;
б) если курсор перед запуском скрипта находился на файле, то по Вашему сценарию предлагается имя этого файла. Можно ввести правило, если пользователь очистил окно ввода одним нажатием (Backspace или Del), то скрипт создаёт файл с настроенным дефолтным именем.

#11:  Author: FlasherLocation: Москва PostPosted: Tue May 28, 2013 19:26
    —
KarS wrote:
Сохраняя из него можно изменить кодировку при необходимости.
Кодировку и в скрипте можно сменить.

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

По моему скрипту пишем в соотв. топик.

#12:  Author: KarSLocation: г. Абакан PostPosted: Wed May 29, 2013 17:19
    —
Когда я писал о разных типах задач, то имел в виду свои ситуации, с которыми я часто встречаюсь.
Конечно, Ваш скрипт решает только первый тип задач.
Чтобы не усложнять разработку скрипта, я и остановился на том, что буду в своей работе использовать два скрипта: один Ваш, а второй от Бати.

#13:  Author: FlasherLocation: Москва PostPosted: Wed May 29, 2013 20:28
    —
KarS wrote:
Чтобы не усложнять разработку скрипта
Какого скрипта? Пока ничего не предлагалось в плане разработки. Объединение, работа с выделенным списком, указания числа пустышек. Вот это была бы конкретика.
Что касаемо дефолтного имени при нахождении на элементе [..], то можно отдельным параметром сделать, поскольку неясно, что кому может понадобиться.
А вот при очистке строки создавать дефолтное имя не буду, поскольку это равносильно закрытию окна по Esc, Отмене, [x]. Разделить эти вещи нельзя.

#14:  Author: KarSLocation: г. Абакан PostPosted: Fri May 31, 2013 18:39
    —
Всё воспринимаю как есть.
Если кроме меня никому не надо, то и не предлагаю пока ничего.
Неудобно Вас отвлекать.
Итак спасибо, за то, что уже поправили.

#15:  Author: Dioxin PostPosted: Tue Jul 28, 2015 13:32
    —
Добрый день. Столкнулся с такой проблемкой: создал кнопку на панели 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. Вот такая у меня петрушка.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group