View previous topic :: View next topic |
Author |
Message |
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Fri Jan 26, 2018 17:19 Post subject: |
|
|
Flasher
Quote: | суть автопереименования не в создании дублей, а в предотвращении перезаписи и необходимости содержать потенциально разные по содержимому файлы |
А если содержимое одинаково, то получается дубляж.
Quote: | А смысл в копиях в том же каталоге какой? |
В папке ярлыка, а не папке исходного файла. Ярлык в одном месте, исходный файл в другом месте, а обрабатываемая рабочая копия возле ярлыка. Я просто привёл пример. Потребность такая, тоже возможна.
Quote: | Это же не бэкапер или размножитель. |
Но скрипт, выполняет и такую функцию тоже. Ведь копирование по ярлыку, уже подразумевает дубляж файла, но уже в том месте, где находится ярлык. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 26, 2018 17:25 Post subject: |
|
|
Lisabon
Копирование по ярлыку никак не подразумевает дубляж. Это лишь побочное событие, о причинах которого я написал выше. Потребность-то возможна, но в контексте сабжа несколько сомнительна. Поэтому задача по размножению тут не ставится. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jan 29, 2018 22:17 Post subject: |
|
|
Lisabon
Значит, вернёмся к ситуации. Посмотри, как там после правок. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Tue Jan 30, 2018 13:08 Post subject: |
|
|
Flasher
При кнопке:
Code: | TOTALCMD#BAR#DATA
C:\ReadMe.vbs
%WF "%T" copy /r
C:\Windows\System32\WScript.exe,2
ReadMe
-1
|
1.
Quote: | При копировании с ярлыка файла/папки, так и не с ярлыка, а просто файл или папку, размер которых превышает 200 МБ , после операции копирования вылазит сообщение с ошибкой |
Теперь ошибки не наблюдаю, но в конце операции, выскакивает окно с надписью "Выполнено!".
2.
Quote: | с использованием имени ярлыка:
Цитата:
01 mka dvd-audio araw;24bit,96000hz,4608kbs.lnk
При копировании с ярлыка, выдаёт ошибку:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 33
Символ: 5
Ошибка: Требуется объект
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
|
Ошибки нет.
3.
Quote: | при попытке копирования файла с именем:
Code: | 01 mka dvd-audio araw;24bit,96000hz,4608kbs.mka |
ничего не происходит. |
Ничего не изменилось. Не копирует.
4.
Quote: | В общем, есть ярлык, он в по одному пути, файл на который ссылается ярлык, не находятся рядом.
Я выбираю ярлык, с которого надо скопировать файл. В левой и правой файловой панелях, пути одинаковы и там находится только ярлык:
|
Теперь результат немного другой и имеем два ярлыка вместо одного:
5.
При копировании с ярлыка, копируется с файлом и сам ярлык:
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jan 30, 2018 16:16 Post subject: |
|
|
Lisabon
5. Вот это вообще подстава.. Если её в расчёте на прогресс-бар обходить, то на чтение будет уходить куда больше времени... Делать? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10271 Location: Россия, Саратов
|
(Separately) Posted: Tue Jan 30, 2018 16:30 Post subject: |
|
|
Тема по очевидным причинам переносится из "Общих вопросов" в Автоматизацию. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Wed Jan 31, 2018 11:31 Post subject: |
|
|
Flasher
Quote: | на чтение будет уходить куда больше времени... |
На сколько больше?
Делай. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 01, 2018 15:19 Post subject: |
|
|
Lisabon wrote: | На сколько больше? | Зависит от длины списка и числа найденных lnk-копий.
Ну, смотри..
Проверяй: Code: | '•••••••••••••••••••••••• VBS ••••••••••••••••••••••••
' Копирование/перемещение выбранного по заданному пути
' с последующей заменой lnk-ярлыков на целевые объекты
' Условие: путь запуска — пустой
' Примечание: в пути достаточно правильной буквы диска
'
' Параметры: %WF "<путь назначения>" <copy/move>
' Ключ системного автопереименования объектов: /r
' Примеры: %WF "%PMy Folder" copy /r
' %WF D:\New\New2\New3\New4\New5 move
'•••••••••••••••••••••••••••••••• Автор: Flasher © •••
Option Explicit : Dim A, FSO, CD, T, Ren, Dic, Del, Col,_
ShA, Fds, TPath, Dash, D, All, Sp, oList, oFolder, Targ,_
NP, Items, N, BN, Ex, c, Equal, Exist, Nr, List, F, Ext
Set A = WSH.Arguments : If A.Count = 0 Then WSH.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
CD = FSO.BuildPath(FSO.GetAbsolutePathName(""), "\")
T = Timer: If A.Named.Exists("r") Then Ren = 8
Set Dic = CreateObject("Scripting.Dictionary")
Set Fds = CreateObject("Scripting.Dictionary")
Set Col = CreateObject("Scripting.Dictionary")
Set Del = CreateObject("Scripting.Dictionary")
Set ShA = CreateObject("Shell.Application")
TPath = FSO.BuildPath(A(1), "\")
If LCase(A(2)) = "move" And StrComp(CD, TPath, 1) = 0 Then WSH.Quit
With CreateObject("CDO.Message")._
AddAttachment("res://shell32.dll/6/262").GetDecodedContentStream
.Type = 1 : For c = 0 To 2 : D = .Read(AscB(.Read(2)) * 2) : Next
If InStr(D, "-") Then Dash = "-" Else Dash = "—"
End With
D = FSO.GetDriveName(TPath)
ShA.NameSpace(D).NewFolder Mid(TPath, Len(D) + 2)
With CreateObject("SAPI.SpFileStream")
.Format.Type = 1 : .Open A(0), 0
.Read All, FSO.GetFile(A(0)).Size : .Close
End With : All = Mid(CStr(All), 2)
Set oList = FSO.OpenTextFile(A(0),,,-1)
Set oFolder = ShA.NameSpace(CD)
Set Targ = ShA.NameSpace(TPath)
Set Items = oFolder.Items
Do : N = oList.ReadLine : D = N
NP = CD & N : Equal = True : Exist = True
If Right(N, 1) = "\" Then
If Ren Then
Nr = N : BN = Replace(N, "\", "") : c = 1
While FSO.FolderExists(TPath & Nr)
If c > 1 Then Ex = " (" & c & ")"
Nr = BN & " " & Dash & " копия" & Ex : c = c + 1
Wend : Fds.Add Nr, ""
Else Fds.Add N, "" End If
End If
With oFolder.ParseName(N)
If .IsLink Then NP = .GetLink.Path: N = FSO.GetFileName(NP):_
Exist = FSO.FileExists(NP) Or FSO.FolderExists(NP) :_
Equal = StrComp(FSO.GetParentFolderName(NP) & "\", CD, 1) = 0
End With
If Exist And Not Dic.Exists(N) Then
Nr = Replace(N, ";", "?")
If Not (Ren = "" And Equal) Then
Items.Filter 78064, Nr
If Items.Count = 1 Then
Sp = "" : If Equal Then Sp = " "
If Not IsLnk(oFolder.ParseName(D), N) Then _
List = List & ";" & Nr Else Dic.Add D, Sp & NP
Else
For Each F in Items
If IsLnk(F, N) Then _
If InStr(vbCr & All, vbCr & FSO.GetFileName(F.Path) &_
vbCr) Then FSO.GetFile(F.Path).Delete(1)
Next : Items.Filter 78064, Nr : c = 0
If Items.Count > 1 Then
For Each F in Items
If IsLnk(F, N) Then
If LCase(A(2)) = "move" Then Del.Add F.Path, ""
Else Col.Add F.Path, "" End If : c = c + 1
If c = Items.Count Then Exit For
Next
Else If Equal Then List = List & ";" & Nr Else Dic.Add D, NP
End If
End If
Else If Equal Then Dic.Add D, " " & NP Else List = List &";"& Nr
End If
End If
Loop Until oList.AtEndOfStream : oList.Close
If IsEmpty(List) Then
If Dic.Count = 0 And Col.Count = 0 Then WSH.Quit
Else
Items.Filter 78064, MId(Replace(List, "\", ""), 2)
Execute "Targ." & A(2) & "Here Items, 12304 + Ren"
End If
For Each F in Del
If FSO.FileExists(F) Then FSO.DeleteFile F, 1 Else FSO.DeleteFolder F, 1
Next
For Each N in Dic
Nr = Dic(N) : F = LTrim(Nr) : D = 1
If FSO.FileExists(F) Or FSO.FolderExists(F) Then
If Left(Nr, 1) = " " Then If LCase(FSO._
GetExtensionName(N)) = "lnk" Then FSO.DeleteFile N, 1 : D = 0
Targ.CopyHere F, 12304 + Ren
If LCase(A(2)) = "move" And D Then If FSO.FileExists(N) Then _
FSO.DeleteFile N, 1 Else FSO.DeleteFolder N, 1
End If
Next : Set Dic = Nothing : c = 1
For Each F in Col.Keys
Ext = FSO.GetExtensionName(F) : If Len(Ext) Then Ext = "." & Ext
BN = FSO.GetBaseName(F) : Ex = Ext : N = BN & Ex
While FSO.FileExists(TPath & N) Or FSO.FolderExists(TPath & N)
If c > 1 Then Ex = " (" & c & ")" & Ext
N = BN & " " & Dash & " копия" & Ex : c = c + 1
Wend : N = TPath & N : If Not (Ren = "" And c > 1) Then _
If FSO.FileExists(F) Then FSO.CopyFile F, N Else FSO.CopyFolder F, N
If LCase(A(2)) = "move" Then If FSO.FileExists(F) Then _
FSO.DeleteFile F, 1 Else FSO.DeleteFolder F, 1
Next : Set Col = Nothing
For Each N in Fds : FFolder TPath & N : Next : Set Fds = Nothing
T = Timer - T
If T > 3 Then
Dim Sec, Title : If T < 10 Then Sec = 2 Else If T < 30 Then Sec = 4
Title = "Копирование": If LCase(A(2)) = "move" Then Title = "Перемещение"
CreateObject("WScript.Shell").Popup "Выполнено!", Sec, " " & Title, 4160
End If
Function IsLnk(Item, N)
If Right(N, 1) = "\" Then IsLnk = False Else _
IsLnk = Item.IsLink And LCase(Right(Item.Path, 4)) = ".lnk"
End Function
Sub FFolder(Folder)
Dim oFold, File, Fold
Set oFold = ShA.NameSpace(Folder)
Set Items = oFold.Items : Items.Filter 78032, "*"
For Each File in Items
If IsLnk(File, "") Then oFold.CopyHere File._
GetLink.Path, 12304 + Ren : FSO.DeleteFile File.Path, 1
Next : Items.Filter 77984, "*"
For Each Fold in FSO.GetFolder(Folder).SubFolders
If FSO.FolderExists(Fold) Then FFolder Fold.Path
Next
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Tue Feb 06, 2018 00:40; edited 5 times in total |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Thu Feb 01, 2018 17:58 Post subject: |
|
|
Flasher
При копировании с ярлыка появляется ошибка:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 39
Символ: 1
Ошибка: Требуется объект
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 01, 2018 18:05 Post subject: |
|
|
Lisabon
Бред какой-то. Это вообще никак не может быть связано с тем, ярлык это или что-то иное. Откуда там взяться ошибке, неясно. Проверь выполнение условия и параметры. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Thu Feb 01, 2018 20:13 Post subject: |
|
|
Flasher
Проверил, всё нормально с параметрами. Потом попробовал параметры, которые указаны в самом скрипте, как пример.
Пробовал на разных дисках, на разных файловых системах. Перемещал скрипт в разные папки и диски. Проверял доступ и владельца. Еще пробовал запускать скрипт на Win 7 64-bit, но проблема та же.
Еще интересное, в том, что, если ярлык находится в корне диска, то выдаёт ошибку:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 39
Символ: 1
Ошибка: Требуется объект
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
а если ярлык находится в папке какой-нибудь, то выдаёт ошибку:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 118
Символ: 3
Ошибка: Требуется объект: 'Item'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 01, 2018 20:40 Post subject: |
|
|
Lisabon wrote: | если ярлык находится в корне диска | А. Вот касаемо расположения (опять же, конкретно ярлыков это не касается) подтверждаю. Исправил.
Lisabon wrote: | а если ярлык находится в папке какой-нибудь | Источник и получатель в точности какие? Хотя бы пару примеров. На Win x32 есть проблема? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Thu Feb 01, 2018 22:21 Post subject: |
|
|
Flasher
Ошибки:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 39
Символ: 1
Ошибка: Требуется объект
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
уже нет, но теперь вместо нее, выдаёт ошибку:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 118
Символ: 3
Ошибка: Требуется объект: 'Item'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
причём без разницы, где находится ярлык, хоть в корне диска, хоть в другой папке.
Quote: | Источник и получатель в точности какие? |
Без разницы, хоть одинаковый или разный.
Quote: | Хотя бы пару примеров |
Quote: | На Win x32 есть проблема? |
На Win 8.0 32-bit ошибка:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 118
Символ: 3
Ошибка: Требуется объект: 'Item'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
есть.
На Win XP SP3 32-bit - ошибки нет. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 01, 2018 22:41 Post subject: |
|
|
Lisabon
Ну, ладно так пруфами (да ещё в виде шотов) закидывать. Верю. Жаль, что такие косяки есть в некоторых версиях.
Пришлось в каждом месте условие прописать. Тестируй. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Thu Feb 01, 2018 23:50 Post subject: |
|
|
Flasher
Теперь, такая ошибка:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 62
Символ: 7
Ошибка: Требуется объект: 'Item(...)'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript |
|
|
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
|