Страница 1 из 2
Перемещение группы файлов одним кликом
Добавлено: Ср ноя 25, 2009 14:28
moroz90
Помогите,пожалуйста, с автоматизацией данной операции.
Требуется Переместить группу выделенных файлов в строго определенную папку. (Например Archiv)
В идеале - повесить на шорт кат. Или кнопку создать.
Добавлено: Ср ноя 25, 2009 16:05
Batya
Можно использовать
этот скрипт.
Добавлено: Ср ноя 25, 2009 17:44
moroz90
Наверно можно...
А не мог ли "любезный джин" заточить данный скрипт под меня?
Папка назначения F:\Arhiv
PS ну не силен я в програмировании. гляжу в скрипт, вижу - фигу

Добавлено: Ср ноя 25, 2009 18:04
Batya
Зажав Shift, перетащить скрипт на панель TC.
Изменить получившуюся кнопку - указать параметры:
%L "F:\Arhiv"
Добавлено: Ср ноя 25, 2009 18:23
moroz90
спасибо, работает.
А можно еще немного дополнить?
Защитой от дурака.
Если курсор стоит на папке. Или , если курсор стоит на двух точках(выход из папки).
Что бы вываливалось какое либо сообщение.
И еще вопросик. Если папка в сети, \\Cdi\output133\, то почему то не работает

Добавлено: Чт ноя 26, 2009 09:10
Batya
moroz90 писал(а):Если курсор стоит на папке. Или , если курсор стоит на двух точках(выход из папки).
Что бы вываливалось какое либо сообщение.
Замени строки
Код: Выделить всё
ElseIf FSO.FolderExists(Rln) Then
FSO.MoveFolder Rln, WScript.Arguments(1)
на это
Код: Выделить всё
Else
MsgBox "Смотри, куда курсор ставишь!", vbExclamation, "Окосел?" '(c) Tol!k :)
Добавлено: Чт ноя 26, 2009 09:55
moroz90
Поменял.
Теперь, если курсор на папке, то - ОКОСЕЛ...

появляется
а если на двух точках, то по прежнему окно с ошибкой "Индекс выходит за пределы диапазона"
И еще про сетевую папку ответь плиз. Как правильно настроить параметры(адрес папки) , если папка - сетевая.
Добавлено: Чт ноя 26, 2009 10:38
Tol!k
moroz90 писал(а):а если на двух точках, то по прежнему...
".." TC не передаёт, так что о том, что курсор был установлен на "..", можно догадаться только косвенно.
//Столкнувшись с этим и пытаясь побороть, я тогда и разозлился на moroz'a :D
Проще всего поменять параметры местами, тогда отсутствие второго параметра будет означать, что курсор стоял на ".."
Если же кроме ".." выделено что-то ещё, то ни один скрипт никогда не узнает о существовании ".."
ЗЫ
moroz90, почему бы просто внимательно не смотреть, что выделено?
Добавлено: Чт ноя 26, 2009 10:48
moroz90
ну ладно, раз .. "TC никуда не передаёт" , буду сам внимательнее.
А то с от вашей доброты совсем обленился

Раньше все делал стандартными способами и не кряхтел. А теперь, полазил по сайту да по форуму, столько всего!!! УХХ..
Спасибо за помощь.
Добавлено: Чт ноя 26, 2009 11:03
Batya
moroz90
Вообщем, примерно так:
Код: Выделить всё
'==========================================================================
' Перемещение выделенных файлов с соответствующими им (для *.html) папками
'
' Параметры вызова из TC:
' %L "%T"
'==========================================================================
Dim FSO, Fld, WSH, Rln, FileList, TargetDir
If WScript.Arguments.Count > 0 Then
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
FileList = GetPath(WScript.Arguments(0))
TargetDir = GetPath(WScript.Arguments(1)) & ""
Else
MsgBox "Смотри, куда курсор ставишь!", vbExclamation, "Окосел?" '(c) Tol!k :)
Quit
End If
For Each Rln In Split(FSO.OpenTextFile(FileList).ReadAll, vbNewLine)
If Rln <> "" Then
Rln = GetPath(Rln)
If FSO.FileExists(Rln) Then
FSO.MoveFile Rln, TargetDir
Fld = FSO.GetBaseName(Rln) & "_files"
If FSO.FolderExists(Fld) Then
MoveFolder Fld, TargetDir
End If
ElseIf FSO.FolderExists(Rln) Then
MoveFolder Rln, TargetDir
End If
End If
Next
Quit
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
Function MoveFolder(pSourcePath, pTargetPath)
FSO.CopyFolder pSourcePath, pTargetPath
FSO.DeleteFolder pSourcePath
End Function
Sub Quit
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit
End Sub
Папки тоже перемещает.
Tol!k писал(а):Проще всего поменять параметры местами, тогда отсутствие второго параметра будет означать, что курсор стоял на ".."
Не так. Гислер сделал т.о., что если в параметрах %L, а курсор на "..", то параметры вообще затираются
все. Попробуй указать "?" в строке параметров и проверить этот случай.
А еще прикол - если
выделить ".." и поставить курсор на
невыделенный файл\папку, то в %L попадет этот файл\папка.
Добавлено: Чт ноя 26, 2009 11:39
Tol!k
Не так. Гислер сделал т.о., что если в параметрах %L, а курсор на "..", то параметры вообще затираются все. Попробуй указать "?" в строке параметров и проверить этот случай.
А... Ну значит можно отследить это по полному отсутствию параметров.
А еще прикол - если выделить ".." и поставить курсор на невыделенный файл\папку, то в %L попадет этот файл\папка.
Бред.
Но объяснимо. Часто замечаю, как при нажатии кнопок снимается выделение с ".."
Если при этом курсор стоит на файле\папке, то именно он и отправится в параметры.
Но бред. Лучше бы в этом случае параметры вообще не отправлялись.
Добавлено: Чт ноя 26, 2009 11:57
sa
Batya писал(а):А еще прикол - если выделить ".." и поставить курсор на невыделенный файл\папку, то в %L попадет этот файл\папка.
Вопрос. Есть ли возможность средствами скрипта (можно с WSH Helper, но без использования параметров %L и т.п.) определить, есть ли на панели
выделенные файлы\папки, в том числе и ".." ?
Добавлено: Чт ноя 26, 2009 12:10
Batya
sa писал(а):можно с WSH Helper
ReadMe.txt писал(а):-------------------------------
Макросы (готовые наборы команд)
-------------------------------
Внимание! На данный момент макросы используют команды,
связанные с буфером обмена и могут удалять нетекстовое
содержимое в нем (с текстом вроде уже проблем нет)
GetSrcSelectedFiles [True, если нужен полный путь]
возвращает массив имен выделенных файлов в панели-источнике.
GetTrgSelectedFiles [True, если нужен полный путь]
возвращает массив имен файлов, выделенных в целевой панели.
GetSrcPath - возвращает путь к панели-источнику
GetTrgPath - возвращает путь к целевой панели
Добавлено: Чт ноя 26, 2009 12:13
sa
Вся беда в том, что GetSrcSelectedFiles возвращает файл под курсором, даже, если ничего не выделено...
Добавлено: Чт ноя 26, 2009 12:28
Batya
sa писал(а):Вся беда в том, что GetSrcSelectedFiles возвращает файл под курсором, даже, если ничего не выделено...
%L тоже возвращает файл под курсором, даже, если ничего не выделено...