View previous topic :: View next topic |
Author |
Message |
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Mon Apr 19, 2010 21:45 Post subject: |
|
|
Batya wrote: | Копирование выделенных файлов\папок с добавлением в начало и конец нового имени определённого текста |
Скрипт удаляет оригинальный файл\папку, т.е. переименовывает исходную.. а хотелось бы, что бы оригинальный файл оставался, а рядом создавался "бэкап"
Подскажите пожалуйста, что подправить. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Apr 19, 2010 23:40 Post subject: |
|
|
HA3APET wrote: | Скрипт удаляет оригинальный файл\папку, т.е. переименовывает исходную.. а хотелось бы, что бы оригинальный файл оставался, а рядом создавался "бэкап" |
Вы, возможно, что-то путаете. Вот этот скрипт выполняет "Переименование выделенных файлов\папок". А вот этот скрипт выполняет "Копирование выделенных файлов\папок".
Если у Вас не так, приведите текст Вашего скрипта. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Tue Apr 20, 2010 01:52 Post subject: |
|
|
Batya
Перетрудился я, всё работает.
Спасибо вам большое. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Tue Jan 27, 2015 19:19 Post subject: |
|
|
Что надо изменить в скрипте, чтобы файлы и папки получались вида (например): wincmd__1.ini.bak, wincmd__2.ini.bak и т.д. ? Т.е. если уже существует бэкап, то создавался бы новый со следующим номером в имени. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 30, 2015 13:41 Post subject: |
|
|
Там менять-то нечего. Сделал новый: Code: | '=======================================================================
' Копировать с переименованием по счётчику и добавочным расширением
' Параметры: %WL "<путь получателя>" <вставка перед №> <доп. расширение>
'=======================================================================
With WScript.Arguments
C = .Count : If C = 0 Then WScript.Quit
If C <> 4 Then MsgBox "Следует указать 4 параметра!", 48,_
Space(12) & "Ошибка вводных данных" : WScript.Quit : End If
List = .Item(0) : P = .Item(1) : S1 = .Item(2) : S2 = .Item(3)
End With
With CreateObject("Scripting.FileSystemObject")
Path = .BuildPath(P, "\")
Set List = .OpenTextFile(List,,,-1)
Do : F = List.ReadLine
If .FileExists(F) Then
BN = .GetBaseName(F) : Ext = "." & .GetExtensionName(F)
If Ext = "." & S2 Then
Ext = "." & .GetExtensionName(BN) : Test = InStrRev(BN, S1)
If Ext <> "." Then
If Test Then BN = Left(.GetBaseName(BN), Test - 1)
Else Ext = ""
If Test And IsNumeric(Mid(BN, Test + Len(S1))) Then _
BN = Left(.GetBaseName(BN), Test - 1)
End If
End If : F1 = Path & BN & S1 : S = Ext & "." & S2 : i = 1
While .FileExists(F1 & i & S) : i = i + 1 : Wend
.CopyFile F, F1 & i & S
Else
F1 = Path & .GetFileName(F) & S1 : i = 1
While .FolderExists(F1 & i & "." & S2) : i = i + 1 : Wend
.GetFolder(F).Copy F1 & i & "." & S2
End If
Loop Until List.AtEndOfStream
End With : 'CreateObject("WScript.Shell").SendKeys "^R" | Если нужно более быстрое появление в панели, то убираем апостроф в посл. строке.
Как это работает:
Code: | Имена выбранных файлов Результаты
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯
Name.ext Name<префикс>№+1.ext.<постфикс>
Name.ext.<постфикс> Name<префикс>№+1.ext.<постфикс>
Name<префикс>№.ext.<постфикс> Name<префикс>№+1.ext.<постфикс>
Для папок - без заморочек:
Name Name<префикс>№+1.<постфикс> |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Thu Feb 05, 2015 18:08 Post subject: |
|
|
Flasher
Спасибо за скрипт, но с длинными путями не работает.
---------------------------
Строка: 32
Символ: 8
Ошибка: Путь не найден
--------------------------- |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 05, 2015 19:49 Post subject: |
|
|
Nick
Ох уж эти длинные пути...
Сколько уж было подобных запросов, а только сейчас возникла ситуация. Не, батник писать не буду. Может, Tol!k подоспеет, я пас. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Thu Mar 05, 2015 21:31 Post subject: |
|
|
Flasher
Какие строки нужно исправить, чтобы работал скрипт без "постфикс"? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 05, 2015 21:37 Post subject: |
|
|
Nick
Без постфикса задача к сабжу не будет иметь отношения. Для неё есть своя тема. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Sat May 14, 2016 13:15 Post subject: |
|
|
Flasher
По-поводу скрипта
Например, имеем файл Program.exe. Хотелось бы получать вот такой результат:
Program.exe.bak
Program.exe.bak (1)
Program.exe.bak (2)
Program.exe.bak (3)
Можно реализовать сие? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon May 16, 2016 12:01 Post subject: |
|
|
Lisabon
Сделал с тем же принципом, только от последнего номера:
Code: | '•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Cоздать копии с добавочным расширением для выбранных элементов
' с добавлением счётчика в скобках, начиная с последнего номера
' Параметры: %WL "<путь назначения>" <расширение копии>
' Примеры: %WL "%P" | %WL "%T" old
'••••••••••••••••••••••••••••••••••••••••• Автор - Flasher © •••
Option Explicit: Dim C, List, Reg, Path, Ext, ShA,_
FSO, F, Test, Filt, M, Items, Cnt, Max, T, x, i, FN
With WScript.Arguments
C = .Count : Ext = ".bak" : If C = 0 Then WScript.Quit
If C = 1 Then MsgBox "Должно быть указано " & vbCr & _
"не менее 2-х параметров!",48, " BackUp": WScript.Quit
List = .Item(0) : Path = .Item(1)
If C = 3 Then Ext = "." & .Item(2)
End With: Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set List = FSO.OpenTextFile(List,,,-1)
Set Reg = New Regexp
Reg.Pattern = "(.*" & Ext & ") \((\d+)\)$"
Path = FSO.BuildPath(Path, "\")
Do : F = Trim(List.ReadLine)
If F <> "" Then
FN = FSO.GetFileName(F) : Max = 0
If Right(FN, Len(Ext)) = Ext Then T = 1
If Reg.Test(FN) Then
With Reg.Execute(FN)(0) FN = .Submatches(0):_
Max = CLng(.Submatches(1)) End With : T = 1
End If
If T <> 1 Then
FN = FN & Ext : If FSO.FileExists(Path & FN) Or _
FSO.FolderExists(Path & FN) Then T = 1
End If
If FSO.FolderExists(F) Then
Test = 1 : Filt = 73888
Else Test = 0 : Filt = 73920 End If
If T = 1 Then
Set Items = ShA.NameSpace(Path).Items
Items.Filter Filt, FN & " (*)"
Cnt = Items.Count
If Cnt Then
For x = 0 To Cnt - 1
M = Items.Item(x) : If Reg.Test(M) Then _
M = CLng(Reg.Execute(M)(0).Submatches(1)):_
If M > Max Then Max = M
Next : FN = FN & " (" & Max + 1 & ")"
Else FN = FN & " (1)" End If
End If : FN = FSO.BuildPath(Path, FN)
If Test Then FSO.GetFolder(F).Copy FN, 0 Else FSO.CopyFile F, FN, 0
End If
Loop Until List.AtEndOfStream |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Mon May 16, 2016 14:18; edited 1 time in total |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Mon May 16, 2016 12:21 Post subject: |
|
|
Flasher
Спасибо! То, что нужно. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Mon Aug 21, 2017 04:22 Post subject: |
|
|
Flasher wrote: | Сделал с тем же принципом, только от последнего номера: |
Что надо изменить в твоём скрипте (Cоздать копии с добавочным расширением для выбранных элементов с добавлением счётчика в скобках, начиная с последнего номера ), что бы к папкам не прибавлялись расширения и счетчик начинался сразу.
Примеры:
Папка
Папка (1)
Папка (2)
Папка (3)
Файл.ехе
Файл.ехе (1)
Файл.ехе (2)
Файл.ехе (3) |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Aug 21, 2017 04:54 Post subject: |
|
|
Iori
Мой ответ выше виден? Тут алгоритм заточен под сабж.
Можно, конечно, скостылить, убрав в 17 строке красное (... "." & .Item(2)), а в качестве 3 параметра писать "", но, по мне, это не дело. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Mon Aug 21, 2017 05:13 Post subject: |
|
|
Flasher
Ну ладно. Я могу в теме копирование с переименовыванием по счетчику задать вопрос.
Flasher wrote: | но, по мне, это не дело. |
В каком смысле? Не хочешь использовать костыли? |
|
Back to top |
|
|
|
|
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
|