Страница 2 из 9
Добавлено: Пт июн 27, 2008 16:21
SkYB
Rodny писал(а):SkYB писал(а):что обозначают вот эти "параметры" - %L , %P , %T , %N и т.д.
Когда открыт диалог настройки панели инструментов - нажми Справка, откроется нужный раздел.
J? пасиба теперь яснее стало

Добавлено: Пт июн 27, 2008 18:42
Batya
SkYB писал(а):а можно ли в этот скрипт , вписать , чтоб он показывал какой нибудь прогресс бар
Сделал. Только при этом я не смогу отслеживать причину возможных ошибок копирования (в т.ч. принудительное нажатие кнопки "Отмена").
SkYB писал(а):и последнее , вот этот параметр
0 - копирование с сохранением структуры вложенных папок (по умолчанию)
- чёгото не работает. Если я правильно понял , то он должен , те файлы которые в списке - перекопировать в указанную директорию с такиме же папками как в списке
Прошу прощения, я не совсем верно описал этот вариант копирования. Он работает только, если в файле-списке указана папка, а не файл.
Добавил к скрипту еще один вариант копирования.
Описываю все на примере.
Имеем файл-список:
Код: Выделить всё
C:\File1.ext
C:\Folder1\File2.ext
C:\Folder2\Folder3\File3.ext
C:\Folder4\
При этом папка "C:\Folder4" содержит
Код: Выделить всё
C:\Folder4\File4.ext
C:\Folder4\Folder5\File5.ext
В результате копирования в папку "C:\Folder6" при разных режимах имеем:
0:
Код: Выделить всё
C:\Folder6\File1.ext
C:\Folder6\File2.ext
C:\Folder6\File3.ext
C:\Folder6\File4.ext
C:\Folder6\Folder5\File5.ext
В данном случае структура сохраняется только при копировании папок.
1:
Код: Выделить всё
C:\Folder6\File1.ext
C:\Folder6\File2.ext
C:\Folder6\File3.ext
C:\Folder6\File4.ext
C:\Folder6\File5.ext
Все файлы копируются в целевую папку без разбивки по вложенным папкам.
2:
Код: Выделить всё
C:\Folder6\File1.ext
C:\Folder6\Folder1\File2.ext
C:\Folder6\Folder2\Folder3\File3.ext
C:\Folder6\Folder4\File4.ext
C:\Folder6\Folder4\Folder5\File5.ext
Копирование выполняется с сохранением полной структуры вложенности до корня диска.
Добавлено: Пт июн 27, 2008 19:18
SkYB
Просто зе Бест, огромное пасиба ещё раз, лучше и не придумать. Угостил бы пивом , только жаль живём далековато

Добавлено: Сб июн 28, 2008 03:10
DrShark
2
Batya
Скрипт для копирования по списку - отличная работа.
Обнаружил несколько багов/недочётов под Windows Vista (позже проверю на XP):
1) не во всех режимах вызывается прогресс бар;
2) не работает режим принудительной перезаписи
(когда Const Overwrite = True, всё равно появляется запрос на перезапись)
3) в меню, в которых используется параметр "", появляется ошибка:
Код: Выделить всё
---------------------------
Windows Script Host
---------------------------
Сценарий: C:\totalcmd\Utils\Copy_from_list_2.vbs
Строка: 264
Символ: 3
Ошибка: Требуется объект: 'oSA'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript
---------------------------
ОК
---------------------------
Собственно, вот моя секция меню Запуск из wincmd.ini, в которую я прописал все варианты работы скрипта:
http://rapidshare.com/files/125496821/u ... u.zip.html
В файле Copy_from_list_2.vbs
Overwrite = False, а в Copy_from_list_2_overwrite.vbs -
True
Добавлено: Пн июн 30, 2008 11:32
Batya
DrShark писал(а):1) не во всех режимах вызывается прогресс бар;
От режима не должно зависеть. Прогресс может не появляться, если копируются файлы небольшого размера. Если это не так, можно подробности?
DrShark писал(а):2) не работает режим принудительной перезаписи
(когда Const Overwrite = True, всё равно появляется запрос на перезапись)
Поправил.
DrShark писал(а):3) в меню, в которых используется параметр "", появляется ошибка
Поправил.
Добавлено: Вт июл 01, 2008 22:11
DrShark
Batya писал(а):DrShark писал(а):1) не во всех режимах вызывается прогресс бар;
От режима не должно зависеть. Прогресс может не появляться, если копируются файлы небольшого размера. Если это не так, можно подробности?
Мне ещё ни разу не удалось увидеть прогресс при использовании режима "1 - копирование всех файлов в корень целевой папки;", даже при копировании содержимого в несколько гигабайт.
Добавлено: Ср июл 02, 2008 14:36
Batya
DrShark писал(а):Мне ещё ни разу не удалось увидеть прогресс при использовании режима "1 - копирование всех файлов в корень целевой папки;", даже при копировании содержимого в несколько гигабайт.
Странно, у меня прогресс появляется.
Еще раз подчеркну - прогресс-бар появляется только при копировании больших файлов. Если копируются мелкие, он не появляется. Это не моя прихоть, так работает стандарный COM-объект. Если выполняется копирование папки с параметром 1, то я рекурсивно запускаю копирование для каждого файла, в не для всей папки сразу. Т.е., если у тебя в копируемой папке миллион файлов по 1 кб, по прогресс не появится, а вот для одного файла на 1 Гб прогресс появится.
Добавлено: Ср июл 02, 2008 17:13
SkYB
Подтверждаю , что прогресс бар появляется - у меня всё пашет на ура , спасибо автору !

Добавлено: Чт июл 03, 2008 16:26
DrShark
Да, точно, на больших файлах прогресс появляется.
Реквест к скрипту: поддержка в файле-списке путей вида
file://localhost/X:/Somedir/
file://localhost/X:/Somedir/file.xyz
т.к. часто приходится брать пути из браузера или веб-редактора.
Добавлено: Чт июл 03, 2008 18:54
Batya
DrShark писал(а):Реквест к скрипту: поддержка в файле-списке путей вида
file://localhost/X:/Somedir/
file://localhost/X:/Somedir/file.xyz
Готово.
Добавлено: Чт июл 10, 2008 21:17
LA_
товарищи, а может ли кто-нить помочь со скриптом, который при запуске будет брать все файлы и вложенные папки из текущей папки, но за исключением заранее заданных папок и файлов (список можно прописать в самом скрипте - он не меняется), и из этих файлов-папок создавать рар-архив с заданным именем (имя также не меняется) + добавленной датой в конце в формате YYYYMMDD в папке bak?
Добавлено: Чт июл 10, 2008 21:31
LA_
Batya
LA_
vbs-скрипт, использующий Script Helper:
Код:
'=======================================================
' Создание текстового файла с содержимым буфера обмена
'=======================================================
господа, а можно ли теперь то же самое сделать, но без Script Helper?
Добавлено: Пт июл 11, 2008 11:25
Batya
LA_ писал(а):господа, а можно ли теперь то же самое сделать, но без Script Helper?
А в чем проблема использования Script Helper?
В данном скрипте ключевые слова - "буфер обмена". Для работы с буфером обмена нужен специальный сторонний COM-объект. В качестве такового может выступать либо Script Helper, либо что-то другое.
LA_ писал(а):товарищи, а может ли кто-нить помочь со скриптом, который при запуске будет брать все файлы и вложенные папки из текущей папки, но за исключением заранее заданных папок и файлов
Кто-нибудь может

Только сейчас совсем нет свободного времени. Через недельку.
Добавлено: Пт июл 11, 2008 22:56
LA_
А в чем проблема использования Script Helper?
осознал, что он используется лишь для этого скрипта у меня.
интересно понять можно ли обойтись без него.
Для работы с буфером обмена нужен специальный сторонний COM-объект. В качестве такового может выступать либо Script Helper, либо что-то другое.
похоже, что этим чем-то другим может быть IE:
Neither WSH nor VBScript are able to interact with the clipboard: neither one allows you to copy data to the clipboard and or to paste data from the clipboard. Internet Explorer, on the other hand, can interact with the clipboard.
ссылка
Добавлено: Пт июл 11, 2008 23:03
LA_
ага. точнее должно быть вот так:
Код: Выделить всё
'=======================================================
' Создание текстового файла с содержимым буфера обмена
'=======================================================
Option Explicit
Dim FileName
'========== Изменяемые параметры =======================
FileName = "descript.txt" ' Имя создаваемого файла
'=======================================================
Dim objIE, Clip, Btn, FSO, OTL, Mess, Title
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
Clip = objIE.document.parentwindow.clipboardData.GetData("text")
Set objIE = Nothing
If Len(Clip) > 0 Then
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(FileName) Then
Mess = "Буфер обмена содержит текст." & vbNewLine & _
"Заменить содержимое файла " & FileName & _
" текстом из буфера обмена?" & vbNewLine
Title = "Замена содержимого файла"
Else
Mess = "Буфер обмена содержит текст." & vbNewLine & _
"Создать файл " & FileName & _
" с содержимым буфера обмена?" & vbNewLine
Title = "Создание текстового файла"
End If
Btn = MsgBox(Mess, vbYesNo + vbQuestion, Title)
If Btn = 7 Then 'Кнопка No
Set FSO = Nothing
WScript.Quit
End If
Else
WScript.Quit
End If
Set OTL = FSO.OpenTextFile(FileName, 2, True)
OTL.Write Clip
OTL.Close
Set OTL = Nothing
Set FSO = Nothing
WScript.Quit