| 
 
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| Lamer 
 
 
 Joined: 20 Mar 2006
 Posts: 522
 
 
 | 
			
				|  (Separately) Posted: Sun Jul 30, 2006 02:41    Post subject: |   |  
				| 
 |  
				| A.N.T. , ты параметры правильно прописал? У меня другая ошибка,но я в скриптах не секу. Так что ждём Batуu.
 |  |  
		| Back to top |  |  
		|  |  
		| Volniy 
 
  
 Joined: 15 Dec 2004
 Posts: 585
 Location: Местный
 
 | 
			
				|  (Separately) Posted: Sun Jul 30, 2006 18:05    Post subject: |   |  
				| 
 |  
				|  	  | 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 |  |  
		|  |  
		| Lamer 
 
 
 Joined: 20 Mar 2006
 Posts: 522
 
 
 | 
			
				|  (Separately) Posted: Mon Jul 31, 2006 02:31    Post subject: |   |  
				| 
 |  
				|  	  | Volniy wrote: |  	  | Так он вроде по выходным на форуме не появляется. | 
 Ну дак я  и сказал
 
  	  | Lamer wrote: |  	  | Так что ждём Batуu. | 
 Я же не написал,сколько ждём
     
 А за скрипт спасибо!
 |  |  
		| Back to top |  |  
		|  |  
		| Batya 
 
  
 Joined: 15 Dec 2004
 Posts: 2229
 Location: Москва, Россия
 
 | 
			
				|  (Separately) Posted: Mon Jul 31, 2006 11:34    Post subject: |   |  
				| 
 |  
				| Всем привет   Скрипт исправил:
 
  	  | 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 |  |  
		|  |  
		| Volniy 
 
  
 Joined: 15 Dec 2004
 Posts: 585
 Location: Местный
 
 | 
			
				|  (Separately) Posted: Mon Jul 31, 2006 12:58    Post subject: |   |  
				| 
 |  
				|  	  | Batya wrote: |  	  | Скрипт исправил: | 
 У меня, как обычно
  , есть пару замечаний. 1) Не стоит включать в скрипт неиспользуемый объект. Я имею ввиду WSH Script Helper. Ведь его просто может не оказаться у пользователя и скрипт не заработает.
 2) Если  в командную строку скрипта передаются пути, их обязательно нужно помещать в кавычки, иначе при наличии в этих путях пробелов количество (да и качество
  ) передаваемых параметров будет абсолютно неверным (попробуй сам скопировать файл в Program Files). Именно поэтому я всегда и пишу что-то типа этого: 
  	  | Quote: |  	  | Параметры: "%L" "%T" (именно в кавычках!) | 
 Кавычки никогда не помешают
  |  |  
		| Back to top |  |  
		|  |  
		| Batya 
 
  
 Joined: 15 Dec 2004
 Posts: 2229
 Location: Москва, Россия
 
 | 
			
				|  (Separately) Posted: Mon Jul 31, 2006 13:31    Post subject: |   |  
				| 
 |  
				| Volniy 1.
  Просто взял за основу существующий скрипт. В пятницу очень поропился, а сегодня не обратил внимания. 2. Согласен. Только %L не обязательно в кавычки помещать. Имя временного файла в коротком формате передается.
 
 Спасибо за замечания. Сейчас поправлю исходный пост.
 |  |  
		| Back to top |  |  
		|  |  
		| Volniy 
 
  
 Joined: 15 Dec 2004
 Posts: 585
 Location: Местный
 
 | 
			
				|  (Separately) Posted: Mon Jul 31, 2006 15:05    Post subject: |   |  
				| 
 |  
				|  	  | Batya wrote: |  	  | Только %L не обязательно в кавычки помещать. Имя временного файла в коротком формате передается. | 
 Действительно. Но все равно "лучше перебдеть, чем недобдеть" (с)
  |  |  
		| 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
 
 |