Batya

|
Posted: Mon Mar 13, 2006 12:28 Post subject: Re: Я попробовал все 3 способа |
|
|
Vladimir77 wrote: | 2. я не умею "от ярлыков копировать исходные файлы", как рекомендует автор совета. |
Кнопка:
Code: | TOTALCMD#BAR#DATA
D:\CopyFromLink.vbs
%L %T
shell32.dll,66
Копирование из ярлыков
-1
|
CopyFromLink.vbs:
Code: | '==========================================================================
' Копирование файлов (в т.ч. файлов из ярлыков) из одной панели TC в другую
'
' В параметрах вызова из TC должно быть прописано:
' %L %T
'====================================================================
Dim TempFile, MyShell, FSO
Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1)
Set MyShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim TrgPath, NewName
TrgPath = InputBox("Копировать в каталог:","Копирование",Wscript.Arguments(1))
Do While Not TempFile.AtEndOfStream
MyFile = TempFile.ReadLine
'----- Извлечение файла из ярлыка -----
If StrComp(FSO.GetExtensionName(MyFile), "LNK", 1) = 0 Then
MyFile = MyShell.CreateShortcut(MyFile).TargetPath
End If
'--------------------------------------
If FSO.FileExists(MyFile) Then
NewName = TrgPath & FSO.GetFile(MyFile).Name
If Not FSO.FileExists(NewName) Then
FSO.CopyFile MyFile, TrgPath
End If
ElseIf FSO.FolderExists(MyFile) Then
NewName = TrgPath & FSO.GetFolder(MyFile).Name
If Not FSO.FolderExists(NewName) Then
FSO.CopyFolder MyFile, TrgPath
End If
End If
Loop
Set TempFile = Nothing
Set MyShell = Nothing
Set FSO = Nothing
WScript.Quit() |
Vladimir77 wrote: | Ссылки на папки создаются по первой кнопке, но вторая кнопка их не обрабатывает. |
Прошу прощения - про папки я не подумал
Вот исправленный скрипт:
Code: | Dim ListFile, FSO, TargetDir, NewName
Set ListFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(Wscript.Arguments(0), 1)
Set FSO = CreateObject("Scripting.FileSystemObject")
TargetDir = InputBox("Копировать в каталог:","Копирование",Wscript.Arguments(1))
If Len(TargetDir) > 0 Then
Dim SelFile
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
If FSO.FileExists(SelFile) Then
NewName = TargetDir & FSO.GetFile(SelFile).Name
If Not FSO.FileExists(NewName) Then
FSO.CopyFile SelFile, TargetDir
End If
ElseIf FSO.FolderExists(SelFile) Then
NewName = TargetDir & FSO.GetFolder(SelFile).Name
If Not FSO.FolderExists(NewName) Then
FSO.CopyFolder SelFile, TargetDir
End If
End If
Loop
End If
Set ListFile = Nothing
Set FSO = Nothing
WScript.Quit() |
А еще заметил особенность (внимание, фича!) - если в параметрах вызова скрипта есть "%L", то панель TC самостоятельно обновится после того, как скрипт отработает.
Т. о., кнопка для этого скрипта:
Code: | TOTALCMD#BAR#DATA
d:\CopyFromList.vbs
%P%N %T %L
shell32.dll,66
Копирование из файла-списка
-1
|
|
|