Создание пустых файлов от 1 до n определенного расширения

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

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

Ответить
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Создание пустых файлов от 1 до n определенного расширения

Сообщение kdn »

Возможно ли в TC, в т.ч. плагинно-скриптово сделать так, чтобы по выделенному файлу слева, имеющему определенное имя и расширение, справа насоздавалось бы указанное в диалоговом окне n количество пустых файлов данного имени и расширения.
Для чего это нужно: например, нужно создать 1000 текстовых файлов. Не будешь же 1000 раз копи-пастить и гасить в имени файла "копия" "копия_копия_...". Достаточно, если скрипт просто укажет <Имя файла> 1.txt <Имя файла> 2.txt
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Предположим, не 1000 раз копировать, а всё же только 10, а операция "гасить" занимает не более 10-15 секунд через инструмент группового переименования.
Но если ещё проще - в скриптовом разделе есть скрипты, которые напрямую делают то, что запрошено.
Windows 11 | TC DreamLair eternal pre-α
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

LonerD писал(а): Но если ещё проще - в скриптовом разделе есть скрипты, которые напрямую делают то, что запрошено.
Например?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Второй скрипт. А нет, первый (но там я ввод в окне числа не реализовал). Здесь только ввод имени. В общем, если надо, то пишем в топик со скриптом, покажу что добавить.
Последний раз редактировалось Flasher Пт май 01, 2015 14:58, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вахмурка
Не годится, это не к пустышкам.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

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

Сообщение Flasher »

Точно?
kdn писал(а):указанное в диалоговом окне n количество пустых файлов
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

Flasher
Да, подходит, подходит, нормально.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Вот такой ещё скрипт есть.

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

'================================================================
' Универсальное создание файлов
'================================================================
' 1-й параметр: имя файла
' 2-й параметр: расширение файла (если "?" - то без расширения)
' 3-й параметр: путь где создавать файлы
' 4-й параметр: количество создаваемых файлов
' 5-й параметр: диалог ввода имени с расширением
' 6-й параметр: диалог ввода количества создаваемых файлов
' 7-й параметр: формат счётчика:
'         1 - один разряд цифр (Name_1.txt, ... Name_12.txt, ...)
'         2 - два разряда цифр (Name_01.txt, ... Name_12.txt, ...)
'         3 - три разряда цифр (Name_001.txt, .. Name_012.txt, ..)
'================================================================
' "%O" "?" - файл без расширения с именем файла под курсором в C:\
' "%O" "bat" - создаётся файл .bat в C:\ ...
' "%O" "ini" "%t" - создаётся ini-файл в панели назначения
' "%O" "ini" "%t" "4" - создаётся 4 ini-файла в панели назначения
' "%O" "ini" "%t" "4" "1" "1" - создаётся 4 ini-файла в панели
'                  назначения + диалог ввода количества файлов
'                  + диалог ввода имени с расширением
'================================================================
' Script:		UniversalCreateFiles.vbs
' Author:		Аверин Андрей (запрос LonerD; модификация - LonerD)
' Build:		1.05 (2012.09.02)
' E-Mail:		Averin-And@yandex.ru
' OfSite:		http://tc-image.3dn.ru/forum/3-595-2695-16-1343552124
'================================================================
Set FSO = CreateObject("Scripting.FileSystemObject")
Name = "DreamLair" : Ext = ".txt" : Path = "C:\" : Cont = 1 : Num = 1 : lDlm = "_"

With WScript.Arguments
  Cnt = .Count
  If Cnt > 6 Then Cont = .Item(6)
  If Cnt > 5 Then DNum = .Item(5)
  If Cnt > 4 Then DName = .Item(4)
  If Cnt > 3 Then Num = .Item(3)
  If Cnt > 2 Then Path = .Item(2)
  If Cnt > 1 Then Ext = .Item(1)
  If Cnt > 0 Then Name = .Item(0)
End With

If Len(Path) = 0 Then WScript.Quit
If Right(Path, 1) <> "\" Then Path = Path & "\"
Titles = "Files Creating"

If Ext = "?" Then
  Ext = ""
  Else
  If Len(Ext) = 0 Then Ext = ".txt"
  If InStr(Ext, ".") = 0 Then Ext = "." & Ext
End If
  
If Len(DName) = 0 Then
  If Len(Name) = 0 Then Name = "DreamLair"
  NE = Name & Ext
  Else
  If DName = "1" Then
    DName = InputBox("Enter file NAME . EXT", Titles, Name & Ext)
    If Len(DName) = 0 Or IsEmpty(DName) Then WScript.Quit
  End If
  NE = DName
End If

If Len(DNum) <> 0 Then
  If DNum = 1 Then
    DNum = InputBox("Number of creating files", Titles, "1")
    If Len(DNum) = 0 Or IsEmpty(DNum) Then WScript.Quit
  End If
  Num = DNum
End If

File = Path & NE

On Error Resume Next
If Num = 1 Then
  If Not FSO.FileExists(File) Then
    CreateFile(File)
  Else
    CreateFile(NextName(File, Cont))
  End If
Else
  For i = 1 To Num
    CreateFile(NextName(File, Cont))
  Next
End If

Sub CreateFile(pFile)
  On Error Resume Next
  FSO.CreateTextFile(pFile)
End Sub
'CreateObject("WScript.Shell").Exec("%commander_path%\Plugins\exe\TCIMG\TCIMG.exe tcimg=50~~$cm540")
'CreateObject("WScript.Shell").Popup "Created " & Num & " files", 1, Titles, 64

Function NextName(pFilePath, Rank)
  Dim lPath, lName, lExt, li, lNum, lNewPath
  With FSO
    lExt = NameCheck(.GetExtensionName(pFilePath))
    lName = NameCheck(.GetBaseName(pFilePath))
    lPath = .GetParentFolderName(pFilePath)
    pFilePath = lPath  & "\" & lName & "." & lExt
    If Len(lPath) > 0 Then
      If Right(lPath, 1) <> "\" Then lPath = lPath & "\"
    End If
    If Len(lExt) <> 0 Then lExt = "." & lExt
    Do
      li = li + 1
      If li < 10^Rank Then
        lNum = Right(String(Rank, "0") & li, Rank)
      Else
        lNum = li
      End If
      lNewPath = lPath & lName & lDlm & lNum & lExt
    Loop While .FileExists(lNewPath)
  End With
  NextName = lNewPath
End Function

Function NameCheck(AnyName)
  arrStr = Array(vbNewLine, vbCr, VbCrLf, vbFormFeed, vbLf, vbTab, vbVerticalTab, Chr(13), Chr(10), "\","/","*","?","""",">","<")
  For uu = 0 To Ubound(arrStr)
    nm = InStr(AnyName, arrStr(uu))
    If nm > 0 Then AnyName = Left(AnyName, nm - Len(arrStr(uu)))
  Next
  NameCheck = AnyName
End Function
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Поскольку практически все предлагаемые решения — скриптовые, тема переносится в "Автоматизацию".
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Можно создать (один раз) некое "решето" из тысячи пустых папок, скажем 1…1000.
В этом решете выделить энное количество папок (по числу требуемых пустышек).
Скопировать (F5) в них исходный файл с опцией "Копировать во все выделенные папки/ссылки целевой панели". Затем в решете нажать Ctrl+B, выделить все файлы и перенести их (F6) в нужную папку с опцией "Автоматически переименовывать копируемые файлы".

P.S.
Если автоматическое переименование TC чем-то не устраивает, после Ctrl+B и выделения всех файлов можно дополнительно использовать инструмент группового переименования – в виде шаблона или на лету.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

kdn, добавил в скрипт возможность указания числа в окне.

LonerD, на будущее: вот такие параметры "ini" "4" "1" "1" в кавычках не нуждаются. И в коде, конечно, хватает лишнего.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

В скрипте убрал обязательное создание первого элемента после подтверждения ввода имени до ввода числа.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Flasher
Хочется продолжать общение в таком духе — пожалуйте в ЛС, а здесь прекращайте. Несколько предыдущих постов либо сокращены, либо удалены.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить