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 Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lamer



Joined: 20 Mar 2006
Posts: 522

Post (Separately) Posted: Sun Jul 30, 2006 02:41    Post subject: Reply with quote

A.N.T. , ты параметры правильно прописал?
У меня другая ошибка,но я в скриптах не секу. Так что ждём Batуu.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Jul 30, 2006 18:05    Post subject: Reply with quote

Lamer wrote:
Так что ждём Batуu.

Так он вроде по выходным на форуме не появляется. Так что пока даю свой вариант скрипта:
Code:
'=========================[ Start of file ]=========================
'  File:         NonStopCopy.vbs
'  Description:  Производит копирование (рекурсивное) выделенных
'                файлов и папок утилитой Non-Stop Copy
'  Installation: Создайте кнопку на панели TC
'                Команда: "диск:\путь\к\файлу\nonstopcopy.vbs"
'                Параметры: "%L" "%T" (именно в кавычках!)
'                Изменить! Const Exe = """Путь к файлу nscopy.exe"""
'  Copyright:    (c) 2006, Volniy

Option Explicit

Const Exe = """C:\Hard\nscopy\nscopy.exe"""
Dim FSO, WSH
Dim SourceList, TargetDir, TargetFile, cnt, Entry
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

SourceList=Wscript.Arguments(0)
TargetDir=Wscript.Arguments(1)

Set SourceList = FSO.OpenTextFile(SourceList, 1)
Do While Not SourceList.AtEndOfStream
  Entry = SourceList.ReadLine
  If FSO.FileExists(Entry) Then
    TargetFile = FSO.BuildPath( TargetDir, FSO.GetFileName(Entry))
    WSH.Run Exe & " """ & Entry & """ """ & TargetFile & """ /e", 0, True
    cnt = cnt +1
  End If
 
  If FSO.FolderExists(Entry) Then
    Call FolderProcess(FSO.GetFolder(Entry), FSO.GetFolder(Entry).name)
  End If
Loop

MsgBox "Скопировано " & cnt & " файл(а,ов)!", vbInformation,"Завершено!"
Set SourceList = Nothing
Set FSO = Nothing
Wscript.Quit()

Function FolderProcess(CurrFolder, SDir)
  Dim sf, f, p
  p=FSO.BuildPath(TargetDir, SDir)
  On Error Resume Next
  FSO.CreateFolder p
  On Error Goto 0
 
  For Each sf in CurrFolder.SubFolders
    Call FolderProcess(sf, FSO.BuildPath( SDir, sf.Name))
  Next

  For Each f in CurrFolder.Files
    TargetFile = FSO.BuildPath(p, f.name)
    WSH.Run Exe & " """ & f.Path & """ """ & TargetFile & """ /e", 0, True
    cnt = cnt +1
  Next
End Function
'=========================[  End of file  ]=========================

Кнопка:
Quote:
TOTALCMD#BAR#DATA
C:\Scripts\nonstopcopy.vbs
"%L" "%T"
C:\Hard\nscopy\nscopy.exe
Скопировать с помощью Non-Stop Copy


-1
Back to top
View user's profile Send private message
Lamer



Joined: 20 Mar 2006
Posts: 522

Post (Separately) Posted: Mon Jul 31, 2006 02:31    Post subject: Reply with quote

Volniy wrote:
Так он вроде по выходным на форуме не появляется.

Ну дак я и сказал
Lamer wrote:
Так что ждём Batуu.

Я же не написал,сколько ждём Wink Smile

А за скрипт спасибо!
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Mon Jul 31, 2006 11:34    Post subject: Reply with quote

Всем привет Smile
Скрипт исправил:
Code:
If Wscript.Arguments.Count < 3 Then
  MsgBox "Неправильно заданы параметры. Параметров должно быть не менее 3." & chr(13) & _
         "Парметры для вызова из TotalCmd:" & chr(13) & _
         "startset.vbs {Путь\nscopy.exe} %L "%T" {Параметры}", _
         vbOKOnly + vbCritical, _
         "Ошибка!"
  Wscript.Quit()
End If

Dim FSO, StreamFile, WSH
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

Dim Selected, Exe, Arg, Args, Target
Exe    = Wscript.Arguments(0)
Target = Wscript.Arguments(2)
If Not FSO.FolderExists(Target) Then
  MsgBox "Неправильно заданы параметры." & chr(13) & _
         "Третьим параметром должна быть папка назначения (в TotalCmd можно написать %T).", _
         vbOKOnly + vbCritical, _
         "Ошибка!"
  Set FSO = Nothing
  Set WSH = Nothing
  Wscript.Quit()
End If
For i = 4 To Wscript.Arguments.Count
  Args = Args & " " & Wscript.Arguments(i - 1)
Next
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(1), 1)
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    WSH.Run Exe & " """ & Selected & """ """ & Target & _
            FSO.GetFileName(Selected) & """" & Args
  End If
  If FSO.FolderExists(Selected) Then
    FolderProcess FSO.GetFolder(Selected), Target & FSO.GetBaseName(Selected) & "\"
  End If
Loop
Set FSO = Nothing
Set WSH = Nothing
Set StreamFile = Nothing
Wscript.Quit()

Function FolderProcess(CurrFolder, TargetFolder)
  Dim sf, f
  If Not FSO.FolderExists(TargetFolder) Then
    FSO.CreateFolder(TargetFolder)
  End If
  For Each sf in CurrFolder.SubFolders
    FolderProcess sf, TargetFolder & sf.Name & "\"
  Next
  For Each f in CurrFolder.Files
    WSH.Run Exe & " """ & f & """ """ & TargetFolder & _
            FSO.GetFileName(f) & """" & Args
  Next
End Function


Кнопка для вызова:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\startset.vbs %COMMANDER_PATH%\Utils\NonStopCopy\nscopy.exe
%L "%T" /e
%COMMANDER_PATH%\Icons\X-Qute.icl
Копирование с помощью NonStopCopy


-1


Last edited by Batya on Mon Jul 31, 2006 13:36; edited 2 times in total
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Jul 31, 2006 12:58    Post subject: Reply with quote

Batya wrote:
Скрипт исправил:

У меня, как обычно Smile , есть пару замечаний.
1) Не стоит включать в скрипт неиспользуемый объект. Я имею ввиду WSH Script Helper. Ведь его просто может не оказаться у пользователя и скрипт не заработает.
2) Если в командную строку скрипта передаются пути, их обязательно нужно помещать в кавычки, иначе при наличии в этих путях пробелов количество (да и качествоWink ) передаваемых параметров будет абсолютно неверным (попробуй сам скопировать файл в Program Files). Именно поэтому я всегда и пишу что-то типа этого:
Quote:
Параметры: "%L" "%T" (именно в кавычках!)

Кавычки никогда не помешают Very Happy
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Mon Jul 31, 2006 13:31    Post subject: Reply with quote

Volniy
1. Smile Просто взял за основу существующий скрипт. В пятницу очень поропился, а сегодня не обратил внимания.
2. Согласен. Только %L не обязательно в кавычки помещать. Имя временного файла в коротком формате передается.

Спасибо за замечания. Сейчас поправлю исходный пост.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Jul 31, 2006 15:05    Post subject: Reply with quote

Batya wrote:
Только %L не обязательно в кавычки помещать. Имя временного файла в коротком формате передается.

Действительно. Но все равно "лучше перебдеть, чем недобдеть" (с) Smile
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 Previous  1, 2
Page 2 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