Скрипты для скачивания файлов

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
skole
Сообщения: 162
Зарегистрирован: Чт дек 30, 2004 23:15
Откуда: Россия, Оренбург

Скрипты для скачивания файлов

Сообщение skole »

Написал скрипт (VBS), но проблема в том, что в пустой папке от не хочет запускаться, пишет что Индекс выходит за пределы допустимого диапазона... Как избежать этой ошибки в дальнейшем? параметр входного файлов описываю как "%L". Т.е. по идее даже если в папке нет никаких файлов, то скрипт должен выполняться

[mod="Avada"]Прежний заголовок "Вопрос скриптописателям" заменён с учётом последующего обсуждения на более содержательный.[/mod]
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Не зная, что должен делать скрипт, и каков его код, могу только посоветовать юзать оператор условия if =). В самом деле, если скрипт обрабатывает список переданных файлов, и ему передаётся пустота...
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Приведи кусок кода со строкой, в которой происходит ошибка.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
skole
Сообщения: 162
Зарегистрирован: Чт дек 30, 2004 23:15
Откуда: Россия, Оренбург

Сообщение skole »

Код: Выделить всё

' ==============================================================
'  Description:	Производит скачивание файлов и сайтов из
'			локальных сетей и Интернет, возможна докачка,
'			скачиваемый файл можно задавать как в ручную,
'			так и из файла с расширением URL
'  Installation:	Параметры: "%L"(именно в кавычках!)
'			Изменить! Exe = """Путь к файлу wget.exe"""
'  Author:		SkOle
' ==============================================================

Dim FSO, WSH, TempFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1)

Commander_Path = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%")
Exe = (chr(34) & Commander_Path + "\System\Bin\WGet\wget.exe" & chr(34))

File = TempFile.ReadLine
If FSO.GetExtensionName(File) <> "url" Then
 URL = InputBox("Введите ссылку для скачивания", "Download Script")
 If URL = nil Then
  WScript.Quit
 Else
  WSH.Run Exe & " -r -c -nd --tries=1000000 " & " " & URL
 End If
Else
 WSH.Run Exe & " -i " & File & " -r -c -nd --tries=1000000"
 WScript.Quit
End If

Set WSH = Nothing
Set FSO = Nothing
Set TempFile = Nothing
WScript.Quit
вот весь скрипт целиком... если папка пустая: в ней нет ни файлов, ни каталогов, то получается, что курсор стоит на [..] (переход на каталог выше) и в качестве входного параметра передается null и выскакивает ошибка... как избежать именно вот этого, что если нет никаких файлов под курсором, то скрипт должен выполнять действия с момента

Код: Выделить всё

 URL = InputBox("Введите ссылку для скачивания", "Download Script")
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Я бы сделал примерно так:

Код: Выделить всё

Dim FSO, WSH, F, TempFile, Commander_Path, Exe, Params
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set WSH = CreateObject("WScript.Shell")

Commander_Path = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") 
Exe = """" & Commander_Path + "\System\Bin\WGet\wget.exe"""
Params = " -r -c -nd --tries=1000000"

If WScript.Arguments.Count > 0 Then
  F = WScript.Arguments(0)
  If Not FSO.FileExists(F) Then
    Set WSH = Nothing 
    Set FSO = Nothing 
    WScript.Quit    
  End If
  Set TempFile = FSO.OpenTextFile(F, 1) 
  Do While Not TempFile.AtEndOfStream
    File = TempFile.ReadLine 
    If LCase(FSO.GetExtensionName(File)) <> "url" Then 
      URL = InputBox("Файл " & File & " не является URL-ом." & vbNewLine & _
              "Введите ссылку для скачивания", "Download Script") 
      If Len(URL) > 0 Then
        WSH.Run Exe & Params & " " & URL, 7, False
      'Else Пропускаем
      End If
    Else 
     WSH.Run Exe & " -i " & File & Params, 7, False
   End If 
  Loop
  TempFile.Close
  Set TempFile = Nothing
Else
  URL = InputBox("Не указаны параметры." & vbNewLine & _
          "Введите ссылку для скачивания", "Download Script") 
  If Len(URL) > 0 Then
    WSH.Run Exe & Params & " " & URL, 7, False
  'Else Пропускаем
   End If
End If

Set WSH = Nothing 
Set FSO = Nothing 
WScript.Quit
Аватара пользователя
skole
Сообщения: 162
Зарегистрирован: Чт дек 30, 2004 23:15
Откуда: Россия, Оренбург

Сообщение skole »

блин, спасибо
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тэкс, граждане пассажиры, тунеядцы, хулиганы, алкоголики, рецидивисты, ... ну, и другие нуждающиеся... :)
Имеются скрипты по скачке серии файлов по прямым линкам из буфера и с сайта. Есть желающие возыметь? 8)

Добавлено: Ср. Сен 21, 2011 02:12
Да, я посмотрю, "много" тут любителей скорости и автоматизма...
Ну, не хотите - как хотите...
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher поделись пожалуйста - мне нужно!
Спасибо!
Последний раз редактировалось cojoc Чт сен 22, 2011 18:31, всего редактировалось 3 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

cojoc
Ну, раз один человек просит, даю так! :)
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Flasher
А архивчик-то с паролем
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Andrey_A
А ты проницателен. :) 6 скачек, зато доселе реакции - ноль. Вот такие граждане у нас: получить хотят, а попросить не могут.
Вот человек попросил - человек и получил. :wink:
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Flasher писал(а):6 скачек, зато доселе реакции - ноль.
Всего лишь-то.
Flasher писал(а):Вот такие граждане у нас: получить хотят, а попросить не могут.
После такого
Flasher писал(а):тунеядцы, хулиганы, алкоголики, рецидивисты, ... ну, и другие нуждающиеся...
просить...
Flasher писал(а):Вот человек попросил - человек и получил.
Затея очевидна.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

ask-rus
Не разводи флудильню.
Вот у cojoc с чувством умора проблем нет, на таких понимающих и было рассчитано.
Всего лишь-то.
За пару часов достаточно, чтобы понять, что это ещё кому-то надо.
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

у меня с чуством юмоа не всегда очень..
Надо было попросить?
Тогда прошу!
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Andrey_A писал(а):Надо было попросить?
Хотя бы положительно отреагировать на вопрос:
Flasher писал(а):Есть желающие возыметь?
Andrey_A писал(а):Тогда прошу!
Отправлено.

[mod="Моторокер"]Два последующих бессмысленных сообщения удалены (п.11). Просьба для просьб использовать личку Flasher.[/mod]
Ответить