Script Request
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Flasher
О! Прозевал Ваш ответ. Спасибо большое. Я так понимю, без TCS эту задачку не решить? Это вообщем то не совсем то чего хотелось бы....
Во-первых при выполнении он начал ругаться, что типа того что объект не может sleep. Я убрал слип, но и потом,.. появляется диалог:
копировать файлы какого типа? А хотелось бы что бы всё саммо происходило. И кроме того, так происходит открытие на панели целевой папки. Этого-то и хотелось избежать. Так что бы нажал кнопку, и забыл, что там происходит...
Но всё равно спасибо.
Может быть появится время, и я его доделаю....
О! Прозевал Ваш ответ. Спасибо большое. Я так понимю, без TCS эту задачку не решить? Это вообщем то не совсем то чего хотелось бы....
Во-первых при выполнении он начал ругаться, что типа того что объект не может sleep. Я убрал слип, но и потом,.. появляется диалог:
копировать файлы какого типа? А хотелось бы что бы всё саммо происходило. И кроме того, так происходит открытие на панели целевой папки. Этого-то и хотелось избежать. Так что бы нажал кнопку, и забыл, что там происходит...
Но всё равно спасибо.
Может быть появится время, и я его доделаю....
taravasya
Просто я очень внимателен и взвешиваю каждую написанную фразу в поставленной задаче. Я там спецом выделил слова. Поэтому без Хелпера тут никак не обойтись. Или нужно ставить условия более грамотно.
Вопрос: условия скрипта выполнены? Если нет, то не удивительно, что там что-то выскакивает.
Sleep предотвращает преждевременное срабатывание команды до отработки предыдущей. Значение можно выбирать исходя из производительности системы, на современных машинах значения можно и уменьшить слегка.
Скрипт никаких действий со стороны пользователя не требует, ничего дополнительно нажимать не нужно.
Просто я очень внимателен и взвешиваю каждую написанную фразу в поставленной задаче. Я там спецом выделил слова. Поэтому без Хелпера тут никак не обойтись. Или нужно ставить условия более грамотно.
Вопрос: условия скрипта выполнены? Если нет, то не удивительно, что там что-то выскакивает.
Sleep предотвращает преждевременное срабатывание команды до отработки предыдущей. Значение можно выбирать исходя из производительности системы, на современных машинах значения можно и уменьшить слегка.
Скрипт никаких действий со стороны пользователя не требует, ничего дополнительно нажимать не нужно.
Возможно я не правильно высказался...
Ссмысл в том, что клиенты приносят мне свои носители с фотографиями. С этих носителей я сбрасываю фотки в "папки слежения" фотокиосков. Так происходит до 300 раз в день....
При этом не хотелось бы нарушать имеющуюся навигацию хотя бы одной панели... потому как "второй рукой" я в это время обрабатываю фотографии для печати.
Я кстати рылся по форуму после этого. Наковырял один скрипт от batya, немножко его изменил, и пытался использовать его в своих целях:
Выводится ошибка:
Разрешение отклонено
Что это значит?
Ссмысл в том, что клиенты приносят мне свои носители с фотографиями. С этих носителей я сбрасываю фотки в "папки слежения" фотокиосков. Так происходит до 300 раз в день....
А как же с выбором типа файлов? Или это от того, что я убрал слипы?Flasher писал(а):Скрипт никаких действий со стороны пользователя не требует
Я кстати рылся по форуму после этого. Наковырял один скрипт от batya, немножко его изменил, и пытался использовать его в своих целях:
Код: Выделить всё
Option Explicit
' Проверяем число параметров
Dim Title
Title = "Копирование с помощью TC"
If WScript.Arguments.Count < 2 Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
Title
WScript.Quit
End If
Dim FSO, OTF, MyFiles, TargetDir
Set FSO = CreateObject("Scripting.FileSystemObject")
Set OTF = FSO.OpenTextFile(WScript.Arguments(0), 1)
TargetDir = WScript.Arguments(1)
If Not FSO.FolderExists(TargetDir) Then
MsgBox "Неправильно задана целевая папка!", _
vbOKOnly + vbCritical, _
Title
Set FSO = Nothing
WScript.Quit
End If
Do While Not OTF.AtEndOfStream
MyFiles = OTF.ReadLine
If Not FSO.FileExists(TargetDir & FSO.GetFile(MyFiles).Name) Then
FSO.CopyFile MyFiles, TargetDir
End If
Loop
Set OTF = Nothing
Set FSO = Nothing
WScript.QuitРазрешение отклонено
Что это значит?
Единствнный минус моего скрипта - это то, что курсор встанет на первый элемент списка в папке. Поэтому возвращаться к обрабатываемому файлу можно, например, через быстрый поиск по букве.taravasya писал(а):не хотелось бы нарушать имеющуюся навигацию хотя бы одной панели... потому как "второй рукой" я в это время обрабатываю фотографии для печати.
Ну я же их не для красоты туда поставил. И почему про выполнение условий ни слова не сказано? Или я сам должен додумывать? К тому же, никакого диалога "копировать файлы какого типа" я не знаю. Можно скриншот посмотреть?taravasya писал(а):А как же с выбором типа файлов? Или это от того, что я убрал слипы?
Почтение всё таки стоит проявить к человеку, которому точно есть, что сказать по этому поводу, с большой буквы ник пишется.taravasya писал(а):Наковырял один скрипт от batya
У меня тот скрипт не работает с параметрами "%P" "%T". Лучше с этим вопросом обратиться к автору.
Ну и в любом случае этот вариант к средству ТС никак не относится.
Не знаю. Может это брендмауэр/файрвол/UAC ругается? В коде этого нет.taravasya писал(а):Выводится ошибка:
Разрешение отклонено
Со скриптом Batya, я вроде разобрался. Неверно был задан второй параметр TargetDir(я его без слеша в конце поставил)!!!а блин!!! наверное и Ваш скрипт из-за этого не сработал в конце!!!(кстати первый параметр %L)
Одако он копирует только файлы. Если я ставлю CopyFolder, то ошибка - файл не найден.... Может быть можно подправить параметр, так что-бы скрипт схавал папку. Правда тогда новая проблема возникнет... Нужен сразу фильтр расширений(что-бы рекурсивно с сохраненийм каталогов копировал, но только изображения)
Одако он копирует только файлы. Если я ставлю CopyFolder, то ошибка - файл не найден.... Может быть можно подправить параметр, так что-бы скрипт схавал папку. Правда тогда новая проблема возникнет... Нужен сразу фильтр расширений(что-бы рекурсивно с сохраненийм каталогов копировал, но только изображения)
Ну если не поддерживает sleep, то очевидно, что версия Хелпера старая. Качайте и регистрируйте новую.
Второе окно выскакивает, потому что оно и должно выскакивать. Это диалог копирование/перемещения - и есть средство ТС, которое требовалось. Есть ещё средство ТС: диспетчер фоновой пересылки, но это уже другая песня. (А если Вам, как уже можно догадаться, было всё равно, средство это ТС, cmd или Explorer, что можно считать даже более логичным выбором, то надо написать пост в уже существующих темах, где параллельно решались подобные вопросы. К примеру, здесь. Кол-во помощников сразу возрастёт.)
Сокращение слипов никакого положительного результата, кроме быстроты срабатывания скрипта не даст, поэтому тут стоит пока оставить как есть. Уменьшение значений может только подпортить картину. Можно ещё поменять TCS.Sleep на WScript.Sleep.
Ещё: Вы мне так и не ответили по поводу заданных условий в скрипте. Они выполнены?
Там в условии так и задано.
Тут промелькнула одна цитатка:
Второе окно выскакивает, потому что оно и должно выскакивать. Это диалог копирование/перемещения - и есть средство ТС, которое требовалось. Есть ещё средство ТС: диспетчер фоновой пересылки, но это уже другая песня. (А если Вам, как уже можно догадаться, было всё равно, средство это ТС, cmd или Explorer, что можно считать даже более логичным выбором, то надо написать пост в уже существующих темах, где параллельно решались подобные вопросы. К примеру, здесь. Кол-во помощников сразу возрастёт.)
Сокращение слипов никакого положительного результата, кроме быстроты срабатывания скрипта не даст, поэтому тут стоит пока оставить как есть. Уменьшение значений может только подпортить картину. Можно ещё поменять TCS.Sleep на WScript.Sleep.
Ещё: Вы мне так и не ответили по поводу заданных условий в скрипте. Они выполнены?
А причём тут мой скрипт? Мой скрипт запускается без всяких параметров, и его править нигде не надо. Достаточно только выделить файлы и нажать на кнопку или что там у Вас.taravasya писал(а):наверное и Ваш скрипт из-за этого не сработал в конце!!!
Код: Выделить всё
Одако он копирует только файлы.Это уже новое условие. Или в структуре кроме изображений ничего нет?Нужен сразу фильтр расширений(что-бы рекурсивно с сохраненийм каталогов копировал, но только изображения)
Тут промелькнула одна цитатка:
Можно заменить *.* на маски с расширениями картинок, а вместо "F:\Dcim" написать WScript.Arguments(0) и внедрить в скрипт.Volniy писал(а):А вообще-то я бы посоветовал копирование Тоталом не осуществлять. Зачем оно тут вааще, ведь его расширенные фичи не задействованы никак, просто копируются все файлы из каждой папки, так? Все, для чего тут нужен Тотал, это получение от него списка папок, содержимое которых нужно копировать и все. Ну, а далее:и все дела.Код: Выделить всё
For Each FItem In curFolder.SubFolders fso.CopyFile FItem.Path & "\*.*", "F:\Dcim" Next
А где? На оффсайте Total-а с плагинами 1-я версия beta. Есть что-то новее?Flasher писал(а):Качайте и регистрируйте новую.
Вообщем вышло у меня кое-что:
Код: Выделить всё
Dim FSO, StartFolder, ReadStartFolder, EndFolder, FItem, curFolder
EndFolder= WScript.Arguments(1)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StartFolder = FSO.OpenTextFile(WScript.Arguments(0), 1)
ReadStartFolder = StartFolder.ReadLine
If Not FSO.FolderExists(EndFolder) Then
FSO.CreateFolder(EndFolder)
End If
If FSO.FolderExists(ReadStartFolder) = False Then
MsgBox "какаято ошибка!", vbCritical
WScript.Quit
End If
Set curFolder = FSO.GetFolder(ReadStartFolder)
For Each FItem In curFolder.SubFolders
FSO.CopyFile FItem.Path & "\*.*", EndFolder
Next
WScript.Sleep 500
WScript.QuitНо есть пара ньюансов.
1)не работает если выделена папка с русским именем(причём если подпапка с руским именем то работает)
2)копирует не сохраняя структуру под-каталогов(а это очень важно)
3)нет никакого прогресс бара, или другого контролла(что-бы при необходимости можно было отменить копирование, ну и есстественно просто наблюдать сколько скопировалось, сколько осталось... и т.д.)
4)Возможно ли сделать какое нибудь подобие очереди копирования. Что-бы не начинать несколько потоков(а то при копировании с диска, такой подход повесит привод наглухо).
Спасибо за помощь!
Есть-то есть. Беты 11 и 11Plus от марта-апреля этого года. Но вот со ссылкой работающей, похоже, проблемы: новые ссылки (например, здесь) больше не работают, везде осталась максимум десятая бета. Кажется, пора заново выкладывать...taravasya писал(а): где? На оффсайте Total-а с плагинами 1-я версия beta. Есть что-то новее?
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Я уже выкладывал, но ей жить осталось всего ничего..Avada писал(а):Кажется, пора заново выкладывать...
taravasya
На мои вопросы отвечать будем? Или всё в одностороннем порядке?
1), 2), 3) в моём скрипте учтено.
про 4) я уже писал в самом начале.
Flasher
Извените.
По Вашему скриту...
После обновления хелпера, скрипт заработал. В принципе всё окейно, но как я говорил мне не хотелось бы, что бы изменялась текущая папка на противоположной панели. Это одна из двух основных причин, почему я захотел сделать эту автоматизацию...
-----
----
Я сразу не заметил Вашей ссылки на эту тему:
http://forum.wincmd.ru/viewtopic.php?t= ... &&start=30
А когда писал предидущий пост, обратил на неё внимание...
Конкретно здесь:
http://forum.wincmd.ru/viewpost.php?p=67445
есть всё, что нужно. За исключением пожалуй прогресс-бара. Но всегда можно нажать ctrl-c...
Сейчас я ее немножко переделал и вместо xcopy, использовал robocopy. После изменений стала более подробная информация о прогрессе +маска файлов. +ищу графическую морду для robocopy(на TechNet есть информация о том, что создано GUI для этой утилиты).
В принципе больше склонен к Вашему скрипту(всё таки без окна командной строки), но то что изменяется правая панель не даст мне покоя. Возможно ли избавиться от этого недуга?
В любом случае, спасибо Вам большое за помощь. Хоть не скриптом, так ссылкой куда-надо.....
Извените.
По Вашему скриту...
После обновления хелпера, скрипт заработал. В принципе всё окейно, но как я говорил мне не хотелось бы, что бы изменялась текущая папка на противоположной панели. Это одна из двух основных причин, почему я захотел сделать эту автоматизацию...
-----
А как-же этот:Flasher писал(а):Мой скрипт запускается без всяких параметров,
Вот его то я и писал не правильно. Без слеша в конце.Flasher писал(а):'Условия:
'1. Ключ в файле конфигурации AlwaysCopyInBackground=1
'2. Параметры: "<Путь назначения>"
----
Я сразу не заметил Вашей ссылки на эту тему:
http://forum.wincmd.ru/viewtopic.php?t= ... &&start=30
А когда писал предидущий пост, обратил на неё внимание...
Конкретно здесь:
http://forum.wincmd.ru/viewpost.php?p=67445
есть всё, что нужно. За исключением пожалуй прогресс-бара. Но всегда можно нажать ctrl-c...
Сейчас я ее немножко переделал и вместо xcopy, использовал robocopy. После изменений стала более подробная информация о прогрессе +маска файлов. +ищу графическую морду для robocopy(на TechNet есть информация о том, что создано GUI для этой утилиты).
В принципе больше склонен к Вашему скрипту(всё таки без окна командной строки), но то что изменяется правая панель не даст мне покоя. Возможно ли избавиться от этого недуга?
В любом случае, спасибо Вам большое за помощь. Хоть не скриптом, так ссылкой куда-надо.....
Последний раз редактировалось taravasya Сб сен 18, 2010 01:14, всего редактировалось 1 раз.
У меня момент с изменением происходит незаметно, т.е. когда по логике сначала открывается папка назначения, потом возвращается в предыдущую, курсор, естественно, устанавливается на первом элементе списка, как я и писал ранее.taravasya писал(а):не хотелось бы, что бы изменялась текущая папка на противоположной панели.
Каюсь. Запамятовал.taravasya писал(а):А как-же этот:
Чтобы избежать проблем с максимальным кол-вом копируемых папок, лучше использовать вот этот вариант(сверху который).taravasya писал(а):Конкретно здесь:
Ну там же есть возврат обратно в текущую папку, я же писал. Всё должно происходить практически незаметно, так как я использую LockTC. Поэкспериментируйте со вторым слипом, пробуйте значения 300, 400.. А сам ТС не позволит со своим диалогом копирования сделать иначе.taravasya писал(а):но то что изменяется правая панель не даст мне покоя. Возможно ли избавиться от этого недуга?
Тут ещё человек решал вопрос с прогресс-баром. Можно попросить у него состряпанную им же утилиту.
Исправился...Flasher писал(а):taravasya, замените лучше ссылкой код, здесь всё-таки топик по vb-скриптам. Либо процитируйте его в той ветке.
Раздуплился я свашим скриптом окончательно. У меня ведь не было ключа на копирование в фоне. ТОчнее он был в значении 0
Теперь действительно, смены каталогов не заметно совершенно. Вот если бы ещё в очередь их ставить. И по маске.......
Историю с прогресс баром я читал. Интересная идея, но пост там последний бог знает когда....
taravasya писал(а):И по маске.
Код: Выделить всё
'Копировать структуру выделенных папок и файлов по маске
'с переименованием одинаковых имён по счётчику
'=====================================================
'Условия:
'1. Ключ в файле конфигурации AlwaysCopyInBackground=1
'2. Параметры: "%T%M" "<Путь назначения>" <маска_расширений>
' Пример: "%T%M" "C:\My Path" *.jpg;*.gif;*.png
'=====================================================
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
If WScript.Arguments.Count = 0 Then
MsgBox "Не заданы параметры!", vbOKOnly + vbCritical, "Копирование"
WScript.Quit
End If
File = WScript.Arguments(0)
TCS.LockTC True
TCS.SetTrgPath(WScript.Arguments(1))
TCS.SendCommand "cm_CopyOtherpanel"
TCS.SendKeystroke "{TAB}"
TCS.SendKeystroke(Trim(WScript.Arguments(2)))
TCS.SendKeystroke "+{TAB 2}{SPACE}{DOWN 4}{ENTER}"
TCS.SetTrgPath(File)
TCS.LockTC False
Set TCS = Nothing
WScript.QuitТо же самое без Хелпера, но прыжок между каталогами виден:
Код: Выделить всё
'Копировать структуру выделенных папок и файлов по маске
'с переименованием одинаковых имён по счётчику
'=====================================================
'Условия:
'1. Ключ в файле конфигурации AlwaysCopyInBackground=1
'2. Параметры: "%T%M" "<Путь назначения>" <маска_расширений>
' Пример: "%T%M" "C:\My Path" *.jpg;*.gif;*.png
'=====================================================
Dim WSH
Set WSH = CreateObject("WScript.Shell")
If WScript.Arguments.Count = 0 Then
MsgBox "Не заданы параметры!", vbOKOnly + vbCritical, "Копирование"
WScript.Quit
End If
File = WScript.Arguments(0)
TCPath = WSH.ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe"
WSH.Run """" & TCPath & """ /S /O /R=""" & WScript.Arguments(1) & """", 0, True
WSH.SendKeys "{F5}{TAB}"
WSH.SendKeys(Trim(WScript.Arguments(2)))
WSH.SendKeys "+{TAB 2}{ }{DOWN 4}{ENTER}"
WSH.Run """" & TCPath & """ /S /O /R=""" & File & """", 1, True
Set WSH = Nothing
WScript.Quit
Последний раз редактировалось Flasher Чт сен 23, 2010 00:39, всего редактировалось 5 раз.



