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 Previous  1, 2, 3, 4, 5 ... 11, 12, 13  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Mon Jul 30, 2012 17:51    Post subject: Reply with quote

obse wrote:
Скажите, можно ли написать bat-файл

Вариант с поиском файлов (Alt+F7), выводом (из результатов поиска) файлов на панель и последующим копированием в нужный каталог с опцией “Автоматически переименовывать копируемые файлы” не устраивает?
Back to top
View user's profile Send private message
obse



Joined: 30 Jul 2012
Posts: 3

Post (Separately) Posted: Mon Jul 30, 2012 18:22    Post subject: Reply with quote

sa
В TC конечно меня устраивает, но батник нужен на другой компьютер, где пользователь умеет только два раза кликнуть на файл. Там вообще проблемы с пользователем, именно поэтому и хотелось бы батник, чтоб все двумя кликами началось и закончилось.

Добавлено спустя 3 минуты:

Avada
Спасибо, я постараюсь усвоить. Наверно смысл похожий в ветке был, вот и подумал, что помогут.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Jul 30, 2012 20:26    Post subject: Reply with quote

obse
Сделать не проблема, только на данном форуме оффтоп. Тут решаются задачи в комбинации с ТС, что нетрудно понять из названия подфорума. С этим лучше сюда.
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Mon Jul 30, 2012 23:35    Post subject: Reply with quote

obse wrote:
Спасибо, я постараюсь усвоить.

А ещё хорошо бы усвоить и вот это. Избыточное цитирование удалено.
Что касается привязки проблемы к TC или отсутствию таковой, тут уж прошу определиться однозначно. Как верно было сказано выше, без такой привязки поставленная задача — вне тематики данного форума.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
obse



Joined: 30 Jul 2012
Posts: 3

Post (Separately) Posted: Tue Jul 31, 2012 00:08    Post subject: Reply with quote

Спасибо за поучения. Я же читаю, то сделать не проблема, это не проблема, а для меня проблема, вот и подумал, вдруг помогут. Ну нет, так нет, извините что с ложкой от каши в ваш суп залез. Совсем не сарказм, просто устал искать, ваш форум не первый.
Извините, удаляюсь.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Jul 31, 2012 21:06    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: Tue Jul 31, 2012 23:02    Post subject: Reply with quote

Tol!k
Спроси по месту назначения.
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 551

Post (Separately) Posted: Sun Feb 10, 2013 03:35    Post subject: Reply with quote

Tol!k

Давно изпользую ваш батник с счётчиком:
http://forum.wincmd.ru/viewpost.php?p=62933

В батнике я только заменил два пункта.

rem if "%pre%"=="" set "pre=%~n2" на if "%pre%"=="" set "pre=%~n2%~x2"
и
rem set "new=%pre%_%e%%ext%" на set "new=%pre%%ext%_bak%e%"

Сейчас батник создаёт бакап файлов/папок по схеме:

File.ext_bak1
File.ext_bak2
File.ext_bak3

Если стереть папку или файл File.ext_bak1, то хотелось бы что-бы при нажатие на кнопку создавался File.ext_bak4, а не File.ext_bak1. Иначе происходит путаниться.

И ещё, можно ли сделать так что-бы был виден процесс копирования. В xcopy это вроде делатеся через /L /F , но у меня почему-то не сработали эти параметры в батнике.

Заранее спасибо.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon Feb 11, 2013 01:28    Post subject: Reply with quote

а может лучше добавлять дату/время?
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 551

Post (Separately) Posted: Mon Feb 11, 2013 05:13    Post subject: Reply with quote

Лутше конечно что-бы было по схеме File.ext_bak1.
Я как-то уж очень привык Smile Притом время и дата не очень критичны для меня, а глаза мозолить будут.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Feb 11, 2013 15:47    Post subject: Reply with quote

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



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon Feb 11, 2013 17:14    Post subject: Reply with quote

да, дело в сортировке
Quote:
z:\>dir /b/oe File.ext_bak*
File.ext_bak1
File.ext_bak10
File.ext_bak9

но не только. Нужно ещё выкусить номер из имени, а с этим могут возникнуть проблемы из-за спецсимволов
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Feb 11, 2013 17:55    Post subject: Reply with quote

Tol!k wrote:
Нужно ещё выкусить номер из имени
Сперва надо получить массив по фильтру, а потом уже выкусывать. Через set, я полагаю? На vbs с этим, конечно, проще.
А ещё нужно предупреждать такие моменты: name (3) (4).exe, т.е. считывать скобки (или что там) с конца. Плюс ко всему, не помешает проверять уже существующие имена с номером, и если курсор на таком файле, то не добавлять номер ко всему имени, а копировать со сменой только номера, взятого из последнего элемента массива. В массиве, ест., могут быть на конце нечисловые символы в заглушах, их нужно отсекать в цикле, отнимая от номера массива поединично, пока условие не достигнет числового статуса.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 551

Post (Separately) Posted: Mon Feb 11, 2013 19:52    Post subject: Reply with quote

Tol!k

Не знаю если это поможет, но я больше 10-ти бекапов папки/файла не использую. Можно даже сделать от File.ext_bak1 до File.ext_bak9
Может это можно сделать через IF NOT EXIST команду.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Feb 16, 2013 22:39    Post subject: Reply with quote

Iori
Code:
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Cоздать указанное число копий для каждого выбранного элемента
' с добавлением счётчика в скобках, начиная с последнего номера
' Параметры: %WL "<путь назначения>" <число копий>
' Пример: %WL "%P" 5

' Автор - Flasher ©
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  If .Count <> 3 Then MsgBox "Должно быть указано три параметра!", 48 : WScript.Quit : End If
  List = .Item(0) : Path = .Item(1) : Count = .Item(2)
End With : If Right(Path, 1) <> "\" Then Path = Path & "\"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Path)
Set SFolds = Folder.SubFolders : Set SFiles = Folder.Files
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, vbNewLine)
  If F <> "" Then
    If FSO.FolderExists(F) Then Test = 1 Else Test = 0
    If Test Then Set SF = SFolds Else Set SF = SFiles
    TestF F, Ext, Ent, BN
    If Ent And Right(BN, 1) = ")" Then
      M = Mid(BN, Ent + 1, Len(BN) - Ent - 1)
      If IsNumeric(M) Then Max = CLng(M)
      BN = Left(BN, Ent - 2)
    End If
    For Each FF in SF
      TestF FF, Ext1, Ent1, BN1
      If Ext = Ext1 And BN & " (" = Left(BN1, Len(BN) + 2) Then
        If Ent1 And Right(BN1, 1) = ")" Then
          Num = Mid(BN1, Ent1 + 1, Len(BN1) - Ent1 - 1)
          If IsNumeric(Num) Then
            Num = CLng(Num) : If Max < Num Then Max = Num
          End if
        End If
      End If
    Next
    For i = 1 To Count
      If Test Then FSO.GetFolder(F).Copy Path & BN & " (" & Max + i & ")", 0 _
      Else FSO.CopyFile F, Path & BN & " (" & Max + i & ")." & Ext, 0
    Next
  End If : Set SF = Nothing
Next : Set SFiles  = Nothing : Set SFolds = Nothing
Set Folder = Nothing : Set FSO = Nothing : WScript.Quit

Sub TestF(Fl, Ex, E, B)
  If FSO.FolderExists(Fl) Then
    B = FSO.GetFileName(Fl)
  Else
    B = FSO.GetBaseName(Fl) : Ex = LCase(FSO.GetExtensionName(Fl))
  End If : E = InStrRev(B, "(")
End Sub
Вместо сортировки по старинке - максимум.
Понимает имена с юникодными символами.
Выбраны могут быть в т.ч. элементы <имя ()>, будут создаваться <имя (+1)>.
В случае, если получатель отличается от источника, и в нём нет копий со счётчиком, отчёт будет идти от № текущего элемента.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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 Previous  1, 2, 3, 4, 5 ... 11, 12, 13  Next
Page 4 of 13

 
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