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 

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

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
kdn



Joined: 19 Sep 2006
Posts: 85
Location: Москва, РФ

Post (Separately) Posted: Fri May 01, 2015 15:22    Post subject: Создание пустых файлов от 1 до n определенного расширения Reply with quote

Возможно ли в TC, в т.ч. плагинно-скриптово сделать так, чтобы по выделенному файлу слева, имеющему определенное имя и расширение, справа насоздавалось бы указанное в диалоговом окне n количество пустых файлов данного имени и расширения.
Для чего это нужно: например, нужно создать 1000 текстовых файлов. Не будешь же 1000 раз копи-пастить и гасить в имени файла "копия" "копия_копия_...". Достаточно, если скрипт просто укажет <Имя файла> 1.txt <Имя файла> 2.txt
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Fri May 01, 2015 15:43    Post subject: Reply with quote

Предположим, не 1000 раз копировать, а всё же только 10, а операция "гасить" занимает не более 10-15 секунд через инструмент группового переименования.
Но если ещё проще - в скриптовом разделе есть скрипты, которые напрямую делают то, что запрошено.
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
kdn



Joined: 19 Sep 2006
Posts: 85
Location: Москва, РФ

Post (Separately) Posted: Fri May 01, 2015 15:48    Post subject: Reply with quote

LonerD wrote:

Но если ещё проще - в скриптовом разделе есть скрипты, которые напрямую делают то, что запрошено.

Например?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri May 01, 2015 15:51    Post subject: Reply with quote

Второй скрипт. А нет, первый (но там я ввод в окне числа не реализовал). Здесь только ввод имени. В общем, если надо, то пишем в топик со скриптом, покажу что добавить.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Fri May 01, 2015 15:58; edited 1 time in total
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Fri May 01, 2015 15:54    Post subject: Reply with quote

http://powerpro.wincmd.ru/Scripts/Duplicate.htm
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri May 01, 2015 15:59    Post subject: Reply with quote

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



Joined: 19 Sep 2006
Posts: 85
Location: Москва, РФ

Post (Separately) Posted: Fri May 01, 2015 16:24    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: Fri May 01, 2015 16:27    Post subject: Reply with quote

Точно?
kdn wrote:
указанное в диалоговом окне n количество пустых файлов

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



Joined: 19 Sep 2006
Posts: 85
Location: Москва, РФ

Post (Separately) Posted: Fri May 01, 2015 16:28    Post subject: Reply with quote

Flasher
Да, подходит, подходит, нормально.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Fri May 01, 2015 17:07    Post subject: Reply with quote

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

Code:
'================================================================
' Универсальное создание файлов
'================================================================
' 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

_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10257
Location: Россия, Саратов

Post (Separately) Posted: Fri May 01, 2015 17:24    Post subject: Reply with quote

Поскольку практически все предлагаемые решения — скриптовые, тема переносится в "Автоматизацию".
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2567

Post (Separately) Posted: Sat May 02, 2015 09:43    Post subject: Reply with quote

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

P.S.
Если автоматическое переименование TC чем-то не устраивает, после Ctrl+B и выделения всех файлов можно дополнительно использовать инструмент группового переименования – в виде шаблона или на лету.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat May 02, 2015 13:10    Post subject: Reply with quote

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

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



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

Post (Separately) Posted: Sat May 02, 2015 17:55    Post subject: Reply with quote

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



Joined: 01 Aug 2008
Posts: 10257
Location: Россия, Саратов

Post (Separately) Posted: Sat May 02, 2015 19:59    Post subject: Reply with quote

sa
Flasher
Хочется продолжать общение в таком духе — пожалуйте в ЛС, а здесь прекращайте. Несколько предыдущих постов либо сокращены, либо удалены.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
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
Page 1 of 1

 
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