Вариант с поиском файлов (Alt+F7), выводом (из результатов поиска) файлов на панель и последующим копированием в нужный каталог с опцией “Автоматически переименовывать копируемые файлы” не устраивает?obse писал(а):Скажите, можно ли написать bat-файл
Копирование с переименовыванием по счетчику
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
sa
В TC конечно меня устраивает, но батник нужен на другой компьютер, где пользователь умеет только два раза кликнуть на файл. Там вообще проблемы с пользователем, именно поэтому и хотелось бы батник, чтоб все двумя кликами началось и закончилось.
Добавлено спустя 3 минуты:
Avada
Спасибо, я постараюсь усвоить. Наверно смысл похожий в ветке был, вот и подумал, что помогут.
В TC конечно меня устраивает, но батник нужен на другой компьютер, где пользователь умеет только два раза кликнуть на файл. Там вообще проблемы с пользователем, именно поэтому и хотелось бы батник, чтоб все двумя кликами началось и закончилось.
Добавлено спустя 3 минуты:
Avada
Спасибо, я постараюсь усвоить. Наверно смысл похожий в ветке был, вот и подумал, что помогут.
obse
Сделать не проблема, только на данном форуме оффтоп. Тут решаются задачи в комбинации с ТС, что нетрудно понять из названия подфорума. С этим лучше сюда.
Сделать не проблема, только на данном форуме оффтоп. Тут решаются задачи в комбинации с ТС, что нетрудно понять из названия подфорума. С этим лучше сюда.
А ещё хорошо бы усвоить и вот это. Избыточное цитирование удалено.obse писал(а):Спасибо, я постараюсь усвоить.
Что касается привязки проблемы к TC или отсутствию таковой, тут уж прошу определиться однозначно. Как верно было сказано выше, без такой привязки поставленная задача — вне тематики данного форума.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Tol!k
Спроси по месту назначения.
Спроси по месту назначения.
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 , но у меня почему-то не сработали эти параметры в батнике.
Заранее спасибо.
Давно изпользую ваш батник с счётчиком:
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 , но у меня почему-то не сработали эти параметры в батнике.
Заранее спасибо.
Я знаю, почему Tol!k не хочет. Там с числовой сортировкой отфильтрованного по шаблону списка надо ковыряться.
Я уже нечто подобное для папок делал, но там реализация не ахти.
Могу и тут на vbs, но не сразу.
Я уже нечто подобное для папок делал, но там реализация не ахти.
Могу и тут на vbs, но не сразу.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Сперва надо получить массив по фильтру, а потом уже выкусывать. Через set, я полагаю? На vbs с этим, конечно, проще.Tol!k писал(а):Нужно ещё выкусить номер из имени
А ещё нужно предупреждать такие моменты: name (3) (4).exe, т.е. считывать скобки (или что там) с конца. Плюс ко всему, не помешает проверять уже существующие имена с номером, и если курсор на таком файле, то не добавлять номер ко всему имени, а копировать со сменой только номера, взятого из последнего элемента массива. В массиве, ест., могут быть на конце нечисловые символы в заглушах, их нужно отсекать в цикле, отнимая от номера массива поединично, пока условие не достигнет числового статуса.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Iori
Вместо сортировки по старинке - максимум.
Понимает имена с юникодными символами.
Выбраны могут быть в т.ч. элементы <имя (№)>, будут создаваться <имя (№+1)>.
В случае, если получатель отличается от источника, и в нём нет копий со счётчиком, отчёт будет идти от № текущего элемента.
Код: Выделить всё
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' 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) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.