Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать батник / 13 сообщений из 13, страница 1 из 1
27.08.2014, 00:06
    #38729626
Помогите написать батник
Я по нему даже книг не нашел

Опишу алгоритм:
1. Создаем папку для изображений.
2. Есть ссылки на изображения, нужно создать массив, запонить его ссылками.
3. Проходимся в цикле по массиву и сохраняем все изображения в папку, причем имена у сохраненных файлов должны быть 0.jpg...N.jpg, т.е. как и значение счетчика

Единственное что я смог сделать это создать папку. Методом тыка не получается все проделать.

Ссылки типа таких

" http://cs14101.vk.me/c7007/v7007430/1eead/adfC1UWQgfI.jpg", " http://cs14101.vk.me/c7007/v7007266/20a96/YHHQY-YPFt0.jpg", " http://cs14101.vk.me/c7007/v7007266/20a7e/bf3gqbEQ8zo.jpg",
...
Рейтинг: 0 / 0
27.08.2014, 01:27
    #38729654
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
Ибн Масул Акаба,

Допустим, у тебя есть текстовый файл url_list.txt со ссылками, тогда это будет выглядеть примерно так:

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
:: создаем каталог
MD MYFOLDER
:: начальное значение счетчика
set COUNTER=0
:: перебор всех ссылок из файла (одна строка - одна ссылка)
for /F "tokens=*" %%A in ( url_list.txt ) do (
  :: нарастили счетчик
  set /A COUNTER=+1 
  :: имя файла для загрузки
  set FNAME=%COUNTER%.jpg
  :: загрузили ссылку в файл
  download %%A MYFOLDER\%FNAME%
)



Вместо download можно использовать или bitsadmin (начиная Win7) или wget, или еще какую тулзу - я видел решения и на VBS и на PowerShell.
...
Рейтинг: 0 / 0
27.08.2014, 18:06
    #38730829
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
DarkMaster, спс. Я на ваське уже написал, к нему в отличие от ватника и документация есть и примеров полно. Да и на язык программирования вася с натяжкой, но похож.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
Dim links(2)
links(0) = "http://cs14101.vk.me/c7007/v7007430/1eead/adfC1UWQgfI.jpg"
links(1) = "http://cs14101.vk.me/c7007/v7007266/20a96/YHHQY-YPFt0.jpg"
links(2) = "http://cs14101.vk.me/c7007/v7007266/20a7e/bf3gqbEQ8zo.jpg"
 
Dim folder
 
folder = SelectFolder(".")
 
Dim aux, aux1
 
For Each link In links
    aux = Split(link, "?")
    aux1 = Split(aux(0), "/")
    Download link, folder & "/" & aux1( Ubound(aux1) )
Next
 
WScript.Echo "Download has finished."
 
Sub Download(url, dst)
    Dim http, stream
 
    Set http = CreateObject("microsoft.xmlhttp")
    Set stream = CreateObject("adodb.stream")
    http.Open "GET", url, False
    http.Send
 
    With stream
        .type = 1
        .open
        .write http.responseBody
        .saveToFile dst, 2
    End With
End Sub
 
Function SelectFolder( myStartFolder )
' This function opens a "Select Folder" dialog and will
' return the fully qualified path of the selected folder
'
' Argument:
'     myStartFolder    [string]    the root folder where you can start browsing;
'                                  if an empty string is used, browsing starts
'                                  on the local computer
'
' Returns:
' A string containing the fully qualified path of the selected folder
'
' Written by Rob van der Woude
' http://www.robvanderwoude.com
 
    ' Standard housekeeping
   Dim objFolder, objItem, objShell
   
    ' Custom error handling
   On Error Resume Next
    SelectFolder = vbNull
 
    ' Create a dialog object
   Set objShell  = CreateObject( "Shell.Application" )
    Set objFolder = objShell.BrowseForFolder( 0, "Select Folder", 0, myStartFolder )
 
    ' Return the path of the selected folder
   If IsObject( objfolder ) Then SelectFolder = objFolder.Self.Path
 
    ' Standard housekeeping
   Set objFolder = Nothing
    Set objshell  = Nothing
    On Error Goto 0
End Function
...
Рейтинг: 0 / 0
27.08.2014, 18:20
    #38730839
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
Ибн Масул АкабаЯ по нему даже книг не нашел
Хэлп есть http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true
...
Рейтинг: 0 / 0
27.08.2014, 21:49
    #38730973
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
user199617DarkMaster, спс. Я на ваське уже написал

У меня получилось несколько короче :)
...
Рейтинг: 0 / 0
28.08.2014, 05:34
    #38731081
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
DarkMaster,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Dim links(2)
links(0) = "http://cs14101.vk.me/c7007/v7007430/1eead/adfC1UWQgfI.jpg"
links(1) = "http://cs14101.vk.me/c7007/v7007266/20a96/YHHQY-YPFt0.jpg"
links(2) = "http://cs14101.vk.me/c7007/v7007266/20a7e/bf3gqbEQ8zo.jpg"
Main
Sub Main()
    Dim title, oShell, oFolder, tmp, tmp1
    title = Chr(194) & Chr(251) & Chr(225) & Chr(229) & Chr(240) & Chr(232) & Chr(242) & Chr(229) & Chr(32) & Chr(239) & Chr(224) & Chr(239) & Chr(234) & Chr(243) & Chr(32) & Chr(228) & Chr(235) & Chr(255) & Chr(32) & Chr(241) & Chr(238) & Chr(245) & Chr(240) & Chr(224) & Chr(237) & Chr(229) & Chr(237) & Chr(232) & Chr(255) & Chr(58)
    Set oShell = CreateObject("Shell.Application")
    Set oFolder = oShell.BrowseForFolder(0, title, 0)
    If oFolder is Nothing then
        Exit Sub
    End If
    For Each link in links
        tmp = Split(link, "?")
        tmp1 = Split(tmp(0), "/")
        Download link, oFolder.self.path & "/" & tmp1( Ubound(tmp1) )
    Next
    WScript.Echo Chr(209) & Chr(234) & Chr(224) & Chr(247) & Chr(232) & Chr(226) & Chr(224) & Chr(237) & Chr(232) & Chr(229) & Chr(32) & Chr(231) & Chr(224) & Chr(226) & Chr(229) & Chr(240) & Chr(248) & Chr(229) & Chr(237) & Chr(238) & Chr(46)
End Sub
Sub Download(url, dst)
    Dim oHttp, oStream
    Set oHttp = CreateObject("Microsoft.XMLHttp")
    Set oStream = CreateObject("Adodb.Stream")
    oHttp.Open "GET", url, False
    oHttp.Send
    With oStream
        .type = 1
        .Open
        .Write oHttp.responseBody
        .SaveToFile dst, 2
    End With
End Sub



Как аналогичная программа на ваське будет выглядеть?

Чтобы с диалогом выбора папки, а также кода скачиваешь файл например /path/to/file.mp3?extra=somehash
он его сохранял в выбранной папке как file.mp3
...
Рейтинг: 0 / 0
28.08.2014, 12:09
    #38731413
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
user199617,

Я не знаток VB. Если задача требует UI - я и беру инструмент, который мне позволит этот UI построить.
Кстати, задумайся - вдруг у тебя будет 100500 ссылок, а не 3 константы как сейчас?
...
Рейтинг: 0 / 0
28.08.2014, 13:26
    #38731549
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
Ибн Масул Акаба, задача переименования файлов в каталоге с произвольных имен
в 0.jpg, 1.jpg... решалась как-то тривиально нескольмими мышко-кликами в Windows Explorer.

Как точно я не помню но думаю нагуглить можно.
...
Рейтинг: 0 / 0
28.08.2014, 14:02
    #38731606
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
DarkMaster, собственно все это затевалось ради этого приложения, которое позволяет скачивать альбомы с фото и музыкой с сайта Вконтакте . Можешь испытать.
...
Рейтинг: 0 / 0
28.08.2014, 15:53
    #38731814
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
user199617,

Тогда зачем тебе батник? Шел бы сразу в профильный форум...
...
Рейтинг: 0 / 0
30.08.2014, 00:42
    #38733215
WebSharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
Powershell для сравнения
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
# 1. Создаем папку для изображений.

md c:\downloads

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

$urls = gc c:\url_list.txt
# 3. Проходимся в цикле по массиву и сохраняем все изображения в папку, причем имена у сохраненных файлов должны быть 0.jpg...N.jpg, т.е. как и значение счетчика

0..($urls.Length - 1) | %{  Start-BitsTransfer $urls[$_] c:\downloads\$_.jpg }
...
Рейтинг: 0 / 0
30.08.2014, 01:19
    #38733223
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
WebSharper,

У тебя имя файла вроде не меняется на "0.jpg" вместо "../jfljsdlkf.jpg". Или я ошибаюсь?
...
Рейтинг: 0 / 0
30.08.2014, 01:21
    #38733224
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать батник
DarkMaster,

Тьфу блин, таки ошибаюсь. Счетчик не учел. В принципе - те же, только в профиль ;)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать батник / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]