Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] помогите устранить проблему цикла в bat

Ответить
Настройки темы
CMD/BAT - [решено] помогите устранить проблему цикла в bat

Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: alexmoreman
Дата: 15-07-2011
в общем есть батник который должен работать по циклу, скачать первую ссылку из list.txt в html файл
потом запускается vbs скрипт и обрабатывает скачанную страницу и передает прямую ссылку вновь на качалку(vbs тьфу-тьфу работает)
после отработки vbs происходит удаление html файла, и должно начаться по новой
потому как в list.txt ссылки идут списком (каждая в новой строке "без пробелов") и так пока не закончаться.

У меня происходит так: Первую ссыль отрабатывает а со второй "шляпа"
вот код батника
Код: Выделить весь код
for /f "usebackq delims=" %%a in ("list.txt") do call :Download "%%a"
exit /b
:Download
wget %1 -O %TEMP%\stranyca.html
wscript script.vbs //b //nologo
del %TEMP%\stranyca.html
exit /b
чё может не так работать?

Что выше решено
И так далее по этой же теме следующая загвоздка вышла..
создаю такой вот батник
Код: Выделить весь код
setlocal enabledelayedexpansion
for  /l %%j in (1,1,9) do @(
          set "$j=%%j"
 for /l %%i in (1,1,8) do @(
          set "$i=%%i"
call wget -c -t 0 http://adres.sait/64/6471/00%%$j:~-3%%/big/%%$i:~-1%%.jpg -O !n!.jpg
)
)
и на выходе скачиваемой по ссылке картинки я хочу иметь их по порядку тоесть на месте в коде !n!.jpg иметь допустим 001.jpg 002.jpg 003 и т.д.
я пробовал по тому же принципу добавив нечто подобное к примеру(да простите меня если ооное бред полнейший)
Код: Выделить весь код
for /l %%k in (1,1,150) do (
   set /a n = %%k + 1
)
пробовал переставляя его место положение .. то работает да не так то вообще отказывался.. я и !n! менял думая что зависело.. но не тут то было..
Прошу помощи от ваших умных голов

Отправлено: 11:22, 29-03-2011

 


Moderator


Сообщения: 53185
Благодарности: 15433

Профиль | Отправить PM | Цитировать


alexmoreman, ну вы же обращаетесь к процедуре :Download
А в конце что? exit /b (выход из батника).

Для возвращения из процедуры используется команда goto :eof

Отправлено: 11:33, 29-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


Petya V4sechkin, таже лажа, усё равно не работает.
он как бы скачивает ссылку под номером 2 и типа запускает vbs , а вот скачивание уже прямой ссылки номер2 уже неработает
вот кстать vbs
Код: Выделить весь код
Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = False
    With WScript.CreateObject("WScript.Shell")
    strPath = .ExpandEnvironmentStrings(.Environment("USER").Item("TEMP"))

    End With
    
    objIE.Navigate "file://" & strPath & "\stranyca.html"
    While objIE.Busy: WScript.Sleep 200:Wend
    For Each tag In objIE.Document.getElementsByTagName("i")
        strFilm = tag.innerHTML
        Next
    strFilm = Replace(strFilm," ","_") ' ?я*яї?ў*< яї?-<
Set tag = objIE.Document.getElementByid("start_download_form")
Set WshShell = CreateObject("WScript.Shell")
Retval = WshShell.Run ("cmd /c wget -c -t 0 http://share-nn.ru/" & _ 
tag.getAttribute("action") &" -O Film/" & strFilm, 1, True)
objIE.Quit
Я похоже догнал в чём может быть засада.
когда скачивается вторая страница то там пока нет прямой ссылки а предупреждение с ожиданием 300 сек(тоесть парсить vbs -у просто нечего)
может подскажите как задержку сделать для скачивания последующей ссылки (тоесть html документа)

я опять затупил
я создал файлик vbs
Код: Выделить весь код
wscript.sleep wscript.arguments(0)
И пришпандорил его к батнику
Код: Выделить весь код
Setlocal EnableDelayedExpansion
Set file=list.txt
for /f "usebackq delims=" %%a in ("%file%") do call :Download "%%a"
exit /b
:Download
wget %1 -O %TEMP%\stranyca.html
wscript script.vbs //b //nologo
del %TEMP%\stranyca.html
cscript //nologo delay.vbs 300000
Так он вроде норм заработал, но после скачивания последней ссылки
всё равно включает паузу
чё сделать я уже туплю

Последний раз редактировалось alexmoreman, 29-03-2011 в 12:42.


Отправлено: 11:46, 29-03-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Petya V4sechkin:
alexmoreman, ну вы же обращаетесь к процедуре :Download
А в конце что? exit /b (выход из батника).
Для возвращения из процедуры используется команда goto :eof »
«exit /b» — допустимая команда.
читать дальше »
Цитата CALL /?:

При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо дважды достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. Команда GOTO /? выводит описание расширения GOTO :EOF, позволяющее выполнить быстрый возврат из пакетного файла.
Я обычно именно ею и пользуюсь, поскольку она позволяет вернуть errorlevel в место вызова, что затем можно проанализировать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:50, 29-03-2011 | #4


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


если после
cscript //nologo delay.vbs 300000
поставив
exit /b
то у меня всё рубится

подскажите как отрубить действие delay.vbs
когда нет ссылок в list.txt

Последний раз редактировалось alexmoreman, 29-03-2011 в 15:51.


Отправлено: 13:24, 29-03-2011 | #5


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


простите за данный пост.. пробую поднять тему ..
но с новым вопросом дабы не создавать новую тему

Отправлено: 01:50, 15-07-2011 | #6


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата alexmoreman:
с новым вопросом »
каким?

Отправлено: 08:46, 15-07-2011 | #7


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


amel27, создаю такой вот батник
Код: Выделить весь код
setlocal enabledelayedexpansion
for  /l %%j in (1,1,9) do @(
          set "$j=%%j"
 for /l %%i in (1,1,8) do @(
          set "$i=%%i"
call wget -c -t 0 http://adres.sait/64/6471/00%%$j:~-3%%/big/%%$i:~-1%%.jpg -O !n!.jpg
)
)
и на выходе скачиваемой по ссылке картинки я хочу иметь их по порядку тоесть на месте в коде !n!.jpg иметь допустим 001.jpg 002.jpg 003 и т.д.
я пробовал по тому же принципу добавив нечто подобное к примеру(да простите меня если ооное бред полнейший)
Код: Выделить весь код
for /l %%k in (1,1,150) do (
   set /a n = %%k + 1
)
пробовал переставляя его место положение .. то работает да не так то вообще отказывался.. я и !n! менял думая что зависело.. но не тут то было..

Отправлено: 12:32, 15-07-2011 | #8


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


alexmoreman, типа такого?
Код: Выделить весь код
SetLocal EnableDelayedExpansion

for /l %%j in (1,1,9) do @(set "$j=00%%j"
for /l %%i in (1,1,8) do @(set "$i=%%i"
  set/a $in+=1& set "$sn=00!$in!"
  wget -c -t 0 http://adres.sait/64/6471/!$j:~-3!/big/!$i!.jpg -O !$sn:~-3!.jpg
))
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:44, 15-07-2011 | #9


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


amel27, обалдеть.. работает великолепно.. спасибо огромнейшее..

Отправлено: 14:06, 15-07-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] помогите устранить проблему цикла в bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] помогите с выходом из бесконечного цикла Cherterok Программирование и базы данных 15 23-12-2010 18:46
Разное - Идентифицировать причину и устранить проблему iDrug Microsoft Windows 7 8 22-07-2010 18:09
Службы - Помогите устранить BSOD ergasheff Microsoft Windows Vista 1 19-05-2010 14:32
[решено] Внедрение цикла в код программы... Помогите разобраться. sashadeg AutoIt 1 19-03-2009 10:38
Ребят помогите устранить ошибку в DNS. nickAd Microsoft Windows NT/2000/2003 5 11-10-2006 08:31




 
Переход