Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Перемещение группы файлов одним кликом
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
moroz90



Joined: 22 Oct 2009
Posts: 36

Post (Separately) Posted: Wed Nov 25, 2009 15:28    Post subject: Перемещение группы файлов одним кликом Reply with quote

Помогите,пожалуйста, с автоматизацией данной операции.
Требуется Переместить группу выделенных файлов в строго определенную папку. (Например Archiv)
В идеале - повесить на шорт кат. Или кнопку создать.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Nov 25, 2009 17:05    Post subject: Reply with quote

Можно использовать этот скрипт.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
moroz90



Joined: 22 Oct 2009
Posts: 36

Post (Separately) Posted: Wed Nov 25, 2009 18:44    Post subject: Reply with quote

Наверно можно...
А не мог ли "любезный джин" заточить данный скрипт под меня?
Папка назначения F:\Arhiv
PS ну не силен я в програмировании. гляжу в скрипт, вижу - фигу Embarassed
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Nov 25, 2009 19:04    Post subject: Reply with quote

Зажав Shift, перетащить скрипт на панель TC.
Изменить получившуюся кнопку - указать параметры:
%L "F:\Arhiv"
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
moroz90



Joined: 22 Oct 2009
Posts: 36

Post (Separately) Posted: Wed Nov 25, 2009 19:23    Post subject: Reply with quote

спасибо, работает.
А можно еще немного дополнить?
Защитой от дурака.
Если курсор стоит на папке. Или , если курсор стоит на двух точках(выход из папки).
Что бы вываливалось какое либо сообщение.

И еще вопросик. Если папка в сети, \\Cdi\output133\, то почему то не работает Sad
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 26, 2009 10:10    Post subject: Reply with quote

moroz90 wrote:
Если курсор стоит на папке. Или , если курсор стоит на двух точках(выход из папки).
Что бы вываливалось какое либо сообщение.

Замени строки
Code:
  ElseIf FSO.FolderExists(Rln) Then
    FSO.MoveFolder Rln, WScript.Arguments(1)

на это
Code:
  Else
    MsgBox "Смотри, куда курсор ставишь!", vbExclamation, "Окосел?" '(c) Tol!k :)

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
moroz90



Joined: 22 Oct 2009
Posts: 36

Post (Separately) Posted: Thu Nov 26, 2009 10:55    Post subject: Reply with quote

Поменял.
Теперь, если курсор на папке, то - ОКОСЕЛ... Smile появляется
а если на двух точках, то по прежнему окно с ошибкой "Индекс выходит за пределы диапазона"
И еще про сетевую папку ответь плиз. Как правильно настроить параметры(адрес папки) , если папка - сетевая.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Nov 26, 2009 11:38    Post subject: Reply with quote

moroz90 wrote:
а если на двух точках, то по прежнему...
".." TC не передаёт, так что о том, что курсор был установлен на "..", можно догадаться только косвенно.
//Столкнувшись с этим и пытаясь побороть, я тогда и разозлился на moroz'a :D
Проще всего поменять параметры местами, тогда отсутствие второго параметра будет означать, что курсор стоял на ".."

Если же кроме ".." выделено что-то ещё, то ни один скрипт никогда не узнает о существовании ".."

ЗЫ
moroz90, почему бы просто внимательно не смотреть, что выделено?


Last edited by Tol!k on Thu Nov 26, 2009 11:52; edited 1 time in total
Back to top
View user's profile Send private message
moroz90



Joined: 22 Oct 2009
Posts: 36

Post (Separately) Posted: Thu Nov 26, 2009 11:48    Post subject: Reply with quote

ну ладно, раз .. "TC никуда не передаёт" , буду сам внимательнее.
А то с от вашей доброты совсем обленился Smile
Раньше все делал стандартными способами и не кряхтел. А теперь, полазил по сайту да по форуму, столько всего!!! УХХ..

Спасибо за помощь.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 26, 2009 12:03    Post subject: Reply with quote

moroz90
Вообщем, примерно так:
Code:
'==========================================================================
' Перемещение выделенных файлов с соответствующими им (для *.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 wrote:
Проще всего поменять параметры местами, тогда отсутствие второго параметра будет означать, что курсор стоял на ".."

Не так. Гислер сделал т.о., что если в параметрах %L, а курсор на "..", то параметры вообще затираются все. Попробуй указать "?" в строке параметров и проверить этот случай.
А еще прикол - если выделить ".." и поставить курсор на невыделенный файл\папку, то в %L попадет этот файл\папка.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Nov 26, 2009 12:39    Post subject: Reply with quote

Quote:
Не так. Гислер сделал т.о., что если в параметрах %L, а курсор на "..", то параметры вообще затираются все. Попробуй указать "?" в строке параметров и проверить этот случай.

А... Ну значит можно отследить это по полному отсутствию параметров.
Quote:
А еще прикол - если выделить ".." и поставить курсор на невыделенный файл\папку, то в %L попадет этот файл\папка.

Бред.
Но объяснимо. Часто замечаю, как при нажатии кнопок снимается выделение с ".."
Если при этом курсор стоит на файле\папке, то именно он и отправится в параметры.
Но бред. Лучше бы в этом случае параметры вообще не отправлялись.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Thu Nov 26, 2009 12:57    Post subject: Reply with quote

Batya wrote:
А еще прикол - если выделить ".." и поставить курсор на невыделенный файл\папку, то в %L попадет этот файл\папка.
Вопрос. Есть ли возможность средствами скрипта (можно с WSH Helper, но без использования параметров %L и т.п.) определить, есть ли на панели выделенные файлы\папки, в том числе и ".." ?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 26, 2009 13:10    Post subject: Reply with quote

sa wrote:
можно с WSH Helper

ReadMe.txt wrote:
-------------------------------
Макросы (готовые наборы команд)
-------------------------------

Внимание! На данный момент макросы используют команды,
связанные с буфером обмена и могут удалять нетекстовое
содержимое в нем (с текстом вроде уже проблем нет)

GetSrcSelectedFiles [True, если нужен полный путь]
возвращает массив имен выделенных файлов в панели-источнике.

GetTrgSelectedFiles [True, если нужен полный путь]
возвращает массив имен файлов, выделенных в целевой панели.

GetSrcPath - возвращает путь к панели-источнику

GetTrgPath - возвращает путь к целевой панели

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Thu Nov 26, 2009 13:13    Post subject: Reply with quote

Вся беда в том, что GetSrcSelectedFiles возвращает файл под курсором, даже, если ничего не выделено...
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 26, 2009 13:28    Post subject: Reply with quote

sa wrote:
Вся беда в том, что GetSrcSelectedFiles возвращает файл под курсором, даже, если ничего не выделено...

%L тоже возвращает файл под курсором, даже, если ничего не выделено...
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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