Batya писал(а):Копирование выделенных файлов\папок с добавлением в начало и конец нового имени определённого текста
Скрипт удаляет оригинальный файл\папку, т.е. переименовывает исходную.. а хотелось бы, что бы оригинальный файл оставался, а рядом создавался "бэкап"
Подскажите пожалуйста, что подправить.
HA3APET писал(а):Скрипт удаляет оригинальный файл\папку, т.е. переименовывает исходную.. а хотелось бы, что бы оригинальный файл оставался, а рядом создавался "бэкап"
Вы, возможно, что-то путаете. Вот этот скрипт выполняет "Переименование выделенных файлов\папок". А вот этот скрипт выполняет "Копирование выделенных файлов\папок".
Если у Вас не так, приведите текст Вашего скрипта.
Что надо изменить в скрипте, чтобы файлы и папки получались вида (например): wincmd__1.ini.bak, wincmd__2.ini.bak и т.д. ? Т.е. если уже существует бэкап, то создавался бы новый со следующим номером в имени.
'=======================================================================
' Копировать с переименованием по счётчику и добавочным расширением
' Параметры: %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"
Если нужно более быстрое появление в панели, то убираем апостроф в посл. строке.
Как это работает:
Имена выбранных файлов Результаты
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯
Name.ext Name<префикс>№+1.ext.<постфикс>
Name.ext.<постфикс> Name<префикс>№+1.ext.<постфикс>
Name<префикс>№.ext.<постфикс> Name<префикс>№+1.ext.<постфикс>
Для папок - без заморочек:
Name Name<префикс>№+1.<постфикс>
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Спасибо за скрипт, но с длинными путями не работает.
---------------------------
Строка: 32
Символ: 8
Ошибка: Путь не найден
---------------------------
Nick
Ох уж эти длинные пути...
Сколько уж было подобных запросов, а только сейчас возникла ситуация. Не, батник писать не буду. Может, Tol!k подоспеет, я пас.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Nick
Без постфикса задача к сабжу не будет иметь отношения. Для неё есть своя тема.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Например, имеем файл Program.exe. Хотелось бы получать вот такой результат:
Program.exe.bak
Program.exe.bak (1)
Program.exe.bak (2)
Program.exe.bak (3)
Последний раз редактировалось Flasher Пн май 16, 2016 13:18, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher писал(а):Сделал с тем же принципом, только от последнего номера:
Что надо изменить в твоём скрипте (Cоздать копии с добавочным расширением для выбранных элементов с добавлением счётчика в скобках, начиная с последнего номера ), что бы к папкам не прибавлялись расширения и счетчик начинался сразу.
Iori Мой ответ выше виден? Тут алгоритм заточен под сабж.
Можно, конечно, скостылить, убрав в 17 строке красное (... "." & .Item(2)), а в качестве 3 параметра писать "", но, по мне, это не дело.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.